디자인 모델 의 대상 지향 기초
10851 단어 디자인 모드
1. 포장
개념: 모든 대상 은 작업 에 필요 한 모든 정 보 를 포함 하고 있 으 며, 이 특성 을 패키지 라 고 합 니 다.
이해: 마치 큰 상자 처럼 특정한 사물 의 공 통 된 특성 을 가지 고 있 습 니 다. 제 가 해 야 할 일 은 바로 이런 공통성 을 하나의 예 로 들 어 Cat 류 를 Tom 이라는 고양이 로 예화 하 는 것 입 니 다.
장점: 1. 결합 을 줄 이면 외부 에 대한 의존 과 관 계 를 줄 이 고 가능 한 한 독립 할 수 있다.2. 유형 내부 의 실현 은 자 유 롭 게 수정 할 수 있 지만 외부 에 미 치 는 영향 을 줄 일 수 있다.3. 뚜렷 한 대외 인 터 페 이 스 를 가진다.
예: 이곳 의 두 가지 유형 은 서로 영향 을 주지 않 고 서로 의존 하지 않 는 다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Cat cat = new Cat("dandan");
cat.ShoutNum = 5;
MessageBox.Show(cat.Shout());
}
class Cat
{
private string name = "";
public Cat (string name)
{
this.name = name;
}
public Cat()
{
this.name = " ";
}
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum;i++ )
{
result += " ";
}
return " " + name + " ";
}
public int shoutNum = 3;
public int ShoutNum
{
get
{
return shoutNum;
}
set
{
if (value <= 10)
shoutNum = value;
else
shoutNum = 10;
}
}
}
private void button2_Click_1(object sender, EventArgs e)
{
Dog dog = new Dog("dandan");
dog.ShoutNum = 5;
MessageBox.Show(dog.Shout());
}
class Dog
{
private string name = "";
public Dog(string name)
{
this.name = name;
}
public Dog()
{
this.name = " ";
}
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
{
result += " ";
}
return " " + name + " ";
}
public int shoutNum = 3;
public int ShoutNum
{
get
{
return shoutNum;
}
set
{
if (value <= 10)
shoutNum = value;
else
shoutNum = 10;
}
}
}
}
}
2. 상속
개념: 대상 의 계승 은 일종 의 'is - a' 의 관 계 를 대표 한다. 만약 에 두 대상 의 A 와 B 가 'B 는 A' 라 고 묘사 할 수 있다 면 B 는 A 를 계승 할 수 있 음 을 나타 낸다.
이해: 예 를 들 어 만년필 은 문구 이 고 만년필 은 문 구 를 계승 했다. 그러나 만년필 은 문구 의 특징 을 가 지 는 동시에 그의 특성 도 있다. 예 를 들 어 만년필 물 을 사용 해 야 하고 붓끝 은 강철 로 만 든 것 이다.그리고 예 를 들 어 아들 과 아버지, 아들 은 아버지의 외모 적 특징 을 가지 지만 아들 자체 가 키 가 크 고 큰 눈 이 어야 한다. 이런 것들 이 바로 새로운 특성 이다. 아버 지 는 대상 을 대상 으로 하 는 것 을 아버지 류 나 기류 라 고 부 르 고 아들 은 자녀 류 나 파생 류 라 고 부른다.
장점: 모든 하위 클래스 의 공공 부분 을 부모 클래스 에 두 고 코드 를 공유 하면 중복 을 피 할 수 있 고 계승 은 수정 이나 확장 으로 이 루어 지 는 실현 이 비교적 쉽다.
주의: 1. 하위 클래스 는 부모 클래스 비 private 의 속성 과 기능 을 가지 고 있 습 니 다 (즉, Public 와 proctected 를 가지 고 있 습 니 다).2. 자 류 는 자신의 속성 과 기능 을 가진다. 즉, 자 류 는 부모 류 에 없 는 속성 과 기능 을 확장 할 수 있다.3. 자 류 는 자신의 방법 으로 부류 의 기능 (방법 재 작성) 을 실현 할 수 있다.
예: 저 는 위 에 있 는 예 들 이 대량의 중복 코드 가 있 는 것 을 보 았 다 고 생각 합 니 다. 그러면 코드 의 양 을 증가 할 뿐만 아니 라 오류 가 발생 하기 쉬 우 므 로 우 리 는 계승 을 사용 하여 그들의 공 통 된 부분 을 아버지 류 라 고 추출 하여 Cat 과 Dog 를 모두 계승 하 게 했 습 니 다.다음은 개 선 된 코드 입 니 다. 비교 해 보면 계승 역할 을 느 낄 수 있 습 니 다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class Animal
{
protected string name = "";
public Animal (string name)
{
this.name = name;
}
public Animal ()
{
this.name = " ";
}
protected int shoutNum = 3;
public int ShoutNum
{
get
{
return shoutNum;
}
set
{
shoutNum = value;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Cat cat = new Cat("dandan");
cat.ShoutNum = 5;
MessageBox.Show(cat.Shout());
}
class Cat:Animal
{
public Cat ():base()
{ }
public Cat (string name):base(name )
{ }
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
{
result += " ";
}
return " " + name + " "+result ;
}
}
private void button2_Click(object sender, EventArgs e)
{
Dog dog = new Dog("dandan");
dog.ShoutNum = 5;
MessageBox.Show(dog.Shout());
}
class Dog : Animal
{
public Dog()
: base()
{ }
public Dog(string name)
: base(name)
{ }
public string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
result += " ";
return " " + name + " " + result;
}
}
}
}
3. 다 형
개념: 서로 다른 대상 은 같은 동작 을 수행 할 수 있 지만 그들의 코드 를 통 해 이 루어 져 야 한다.
이해: 예 를 들 어 우리 코드 에서 예 를 들 면 고양이 와 개 는 모두 짖 지만 짖 는 소리 가 다 르 기 때문에 우 리 는 부 르 는 방법 을 쓸 수 있다. 이 방법 은 부 류 이지 만 부 류 는 고양이 와 개의 울 음소 리 를 직접 실현 할 수 없 기 때문에 부 류 를 가상 화 시 킨 다음 에 자 류 를 다시 쓰 는 방법 은 override 이다.
예: 이 예 에서 다 형 을 사 용 했 기 때문에 운행 결과 에 동물 신청 이 완 료 된 후에 울 음소 리 경기 에서 모든 동물 은 자동 으로 해당 하 는 울 음소 리 와 결합 하여 곧 Shout () 방법 을 다시 써 서 정확 한 울 음소 리 를 얻 을 것 이다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class Animal
{
protected string name = "";
public Animal(string name)
{
this.name = name;
}
public Animal()
{
this.name = " ";
}
protected int shoutNum = 3;
public int ShoutNum
{
get
{
return shoutNum;
}
set
{
shoutNum = value;
}
}
public virtual string Shout()
{
return "";
}
}
private void button1_Click(object sender, EventArgs e)
{
Cat cat = new Cat("dandan");
cat.ShoutNum = 5;
MessageBox.Show(cat.Shout());
}
class Cat : Animal
{
public Cat()
: base()
{ }
public Cat(string name)
: base(name)
{ }
public override string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
result += " ";
return " " + name + " " + result;
}
}
private void button2_Click(object sender, EventArgs e)
{
Dog dog = new Dog("dandan");
dog.ShoutNum = 5;
MessageBox.Show(dog.Shout());
}
class Dog : Animal
{
public Dog()
: base()
{ }
public Dog(string name)
: base(name)
{ }
public override string Shout()
{
string result = "";
for (int i = 0; i < shoutNum; i++)
result += " ";
return " " + name + " " + result;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private Animal[] arrayAnimal;//
//
private void button3_Click(object sender, EventArgs e)
{
arrayAnimal = new Animal[2];
arrayAnimal[0] = new Cat(" ");
arrayAnimal [1]=new Dog (" ")
}
private void button4_Click(object sender, EventArgs e)
{
foreach (Animal item in arrayAnimal )// , Shout()
{
MessageBox.Show(item.Shout());
}
}
}
}
이 세 가지 특성 에 대한 이 해 는 아직 실천 이 향상 되 어야 하 니 여러분 의 지 도 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.