반응형
//추상화 -인터페이스를 통한 사물의 추상화
//달리는 것의 추상화
interface 달리는것{
void 달린다();
}
class 자동차 implements 달리는것{
public void 달린다(){
engine(); //구체적인 자동차의 달리는 기능 구현
}
}
class 자전거 implements 달리는것{
public void 달린다(){
패달(); // 구체적인 자전거의 달리는 기능구현
}
}
//캡슐화 - 주요기능/정보를 외부에 노출시키지 않고 인터페이스 대상만 노출하여 재사용성 향상
class 캡슐화된클래스{
private data1;
public String getData(){
return 처리로직(data1);//data1,처리로직은 외부에 숨겨지고 해당 값만으로 외부와 인터페이스한다.
}
private String 처리로직(data1){
...//복잡한 처리로직
}
}
//상속성- super class의 내용을 sub class에서 사용
class 자동차{
public void 달린다(){..};
}
class 스포츠카 extends 자동차{
//달린다 기능 사용가능
public void 급정거(){..};//상속외에 기능 추가가능
}
//다형성 - overriding, overloading :폴리모피즘
//overloading
class 자동차{
public void 달린다(int data1){
//100km
}
public void 달린다(int data1, int data2){
//1000km
}
}
//Object의 .toString();메소드
//.toString();, .toString('#'); 등이 가능
//클래스 사용시에 달리다 메소드에 파라메터 갯수와 형식에 따라 같은 이름의 메소드호출시에도
//다른 처리 가능
//overriding
interface 자동차{
void 달린다(; //자동차 추상화 ;
}
class 스포츠카 implements 자동차{
public void 달린다(..200km..){ //200km };
}
class 트럭 implements 자동차{
public void 달린다(..50km..){ //50km };
}
//subclass들이 overring 하여 superclass의 메소드 재정의
//Object를 상속받은 클래스들이 toString();을 별도 구현
//클래스별로 toString()을 재정의 해서 사용-->메소드 재사용성 증가
//어디다 사용하느냐? --> 메소드의 동적처리시 사용(Virtual Method Invocation)
// -컴파일시점이 아닌 실행 시점에 메소드 정의 : 디자인패턴의 핵심
//strategy pattern
//구현 main class
//구현 class 별로 재사용, 확장이 용이
if(돈이 많으면)
자동차 = new 스포츠카();
else(돈이 없으면)
자동차 = new 트럭();
자동차.달린다();//동적메소드 실행
//장점 : 자동차 추가시 새로운 차종을 인터페이스에 맞게 추가 해주면 된다.
// 사용 업무별 자동차 확장 축소가 가능하다.
//다형성이 없다면.. 바뀌는 부분을 찾아내어 바뀌지 않는 부분으로부터 분리
class 렌트{
if(돈이 많으면)
스포츠카 렌트카 = new 스포츠카();
렌트카.달린다();
else(돈이 없으면)
트럭 렌트카 = new 트럭();
렌트카.달린다();
else...//추가시.. 어떤 규칙을 갖는가? 리어카.리어카달린다(); 규격없이 생성
//재사용성 향상: 인터페이스나 추상클래스의 규격에 맞게 사용하여 재사용이 용이
//유연성 향상 : 인터페이스를 통한 유연한 기능확장 및 클래스 추가(차종추가) 가능
// :사용자는 규격에 맞는 차를 추가하여 사용가능
//달리는 것의 추상화
interface 달리는것{
void 달린다();
}
class 자동차 implements 달리는것{
public void 달린다(){
engine(); //구체적인 자동차의 달리는 기능 구현
}
}
class 자전거 implements 달리는것{
public void 달린다(){
패달(); // 구체적인 자전거의 달리는 기능구현
}
}
//캡슐화 - 주요기능/정보를 외부에 노출시키지 않고 인터페이스 대상만 노출하여 재사용성 향상
class 캡슐화된클래스{
private data1;
public String getData(){
return 처리로직(data1);//data1,처리로직은 외부에 숨겨지고 해당 값만으로 외부와 인터페이스한다.
}
private String 처리로직(data1){
...//복잡한 처리로직
}
}
//상속성- super class의 내용을 sub class에서 사용
class 자동차{
public void 달린다(){..};
}
class 스포츠카 extends 자동차{
//달린다 기능 사용가능
public void 급정거(){..};//상속외에 기능 추가가능
}
//다형성 - overriding, overloading :폴리모피즘
//overloading
class 자동차{
public void 달린다(int data1){
//100km
}
public void 달린다(int data1, int data2){
//1000km
}
}
//Object의 .toString();메소드
//.toString();, .toString('#'); 등이 가능
//클래스 사용시에 달리다 메소드에 파라메터 갯수와 형식에 따라 같은 이름의 메소드호출시에도
//다른 처리 가능
//overriding
interface 자동차{
void 달린다(; //자동차 추상화 ;
}
class 스포츠카 implements 자동차{
public void 달린다(..200km..){ //200km };
}
class 트럭 implements 자동차{
public void 달린다(..50km..){ //50km };
}
//subclass들이 overring 하여 superclass의 메소드 재정의
//Object를 상속받은 클래스들이 toString();을 별도 구현
//클래스별로 toString()을 재정의 해서 사용-->메소드 재사용성 증가
//어디다 사용하느냐? --> 메소드의 동적처리시 사용(Virtual Method Invocation)
// -컴파일시점이 아닌 실행 시점에 메소드 정의 : 디자인패턴의 핵심
//strategy pattern
//구현 main class
//구현 class 별로 재사용, 확장이 용이
if(돈이 많으면)
자동차 = new 스포츠카();
else(돈이 없으면)
자동차 = new 트럭();
자동차.달린다();//동적메소드 실행
//장점 : 자동차 추가시 새로운 차종을 인터페이스에 맞게 추가 해주면 된다.
// 사용 업무별 자동차 확장 축소가 가능하다.
//다형성이 없다면.. 바뀌는 부분을 찾아내어 바뀌지 않는 부분으로부터 분리
class 렌트{
if(돈이 많으면)
스포츠카 렌트카 = new 스포츠카();
렌트카.달린다();
else(돈이 없으면)
트럭 렌트카 = new 트럭();
렌트카.달린다();
else...//추가시.. 어떤 규칙을 갖는가? 리어카.리어카달린다(); 규격없이 생성
//재사용성 향상: 인터페이스나 추상클래스의 규격에 맞게 사용하여 재사용이 용이
//유연성 향상 : 인터페이스를 통한 유연한 기능확장 및 클래스 추가(차종추가) 가능
// :사용자는 규격에 맞는 차를 추가하여 사용가능
반응형
'T-prj' 카테고리의 다른 글
디자인 패턴 설명/구분 (0) | 2009.12.15 |
---|---|
D-80 (0) | 2009.12.03 |
study 시작.. (0) | 2009.10.14 |
Recent Comment