728x90
반응형
SMALL
1. 캡슐화
캡슐화 (encapsulation) |
캡슐화된 객체의 세부 내용이 외부에 은폐되어 변경이 발생해도 오류의 파급효과가 적음 |
캡슐퐈된 객체들은 재사용이 용이함 | |
인터페이스가 단순해지고, 객체간의 결합도가 낮아짐 | |
객체를 캡슐화하여 what만 보여주고, how는 감춤 | |
객체를 작성할 때 숨겨야하는 정보외 정보를 구분하여 작성함 | |
객체의 사용자는 기능만 알고 사용하여, 어떻게 처리되는지는 은폐된다. (Infomation hiding) |
장점 | 객체에 포함된 정보의 손상과 오용을 막을 수 있다. |
객체 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다 | |
데이터가 바뀌어도 다른 객체에 영향을 주지않아 독립성이 유지된다. | |
처리된 결과만 사용하므로 객체의 이식성이 좋다. | |
객체의 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다. | |
인터페이스를 단순화 시킬수 있다. | |
응집도가 향상된다. | |
재사용이 용이하다. |
2. 정보 은닉(은폐)
정보은닉(은폐) (infomation hiding) |
캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기고 연산만을 통하여 접근을 허용하는 것이다. |
각 객체의 수정이 다른 객체에 주는 고려되지 않은영향을 최소화하는 기술이다. | |
외부 객체가 특정 객체의 데이터와 함수를 직접 접근하여 사용하거나 변경하지 못하므로, 유지보수와 소프트웨어 확장시 오류를 최소화 할 수 있다. |
3. 상속성
상속성 (inheritance) |
이미 정의된 상의 클래스(슈퍼클래스나 부모 클래스)의 모든 속성과 메소드를 하위 클래스가 물려받는 것이다. |
상속성의 이용하면 하위 클래스의 모든 속성과 메소드를 ㅏ신의 클래스 내에서 다시 정의하지 않고서도, 즉시 자신의 속성으로 사용할 수 있다. | |
하위 클래스는 상위 클래스로 부터 상속받은 속성과 메소드 외에 새로운 속성과 메소드를 추가하여 사용할 수 있다. | |
상위 클래스의 속성과 메소드를 하위 클래스가 공유할 수 있기 때문에 객체와 클래스의 재사용, 즉 소프트웨어 재사용을 증대시키는 중요한 개념이 된다. | |
다중 상속성(mutiple inheritence) : 한개의 클래스가 2개 이상의 상위 클래스토 부터 속성과 메소드를 상속받는 것이다. - 자바에선 안되고 직접상속받고, 인터페이스로 추상적으로 상속받는 방법이있다. |
4. 추상화
추상화 (abstract) |
불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 초점을 두어 개략화 하는 것이다. |
객체의 성징을 분해하여 공통된 성질을 추출하여 슈퍼클래스를 선정하는 것으로, 즉 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화, 모델화 하는 것이다. | |
인간이 복잡한 문제를 다루는데 가장 기본이 되는 방법으로, 완전한 시스템을 구축하기 전에 그 시스템과 유사한 모델을 만들어서 여러 가지 요인들을 테스트할 수 있다. | |
추상화는 최소 비용으로 실제 상황에 대처할 수 있고, 시스템의 구조 및 구성을 가시적으로 볼 수있다. |
5. 다형성
다형성 (polymorphism) |
메시지에 의해 객체(클래스가) 연산을 수행하게 될 때 하나의 메시지에 대해 각 가지고 있는 고유한 방법으로 응답할 수 있는 능력이다. |
다형성은 여러 가지 형태를 가지고 있다는 의미로 하나의 메시지에 대해 여러가지 형태의 응답이 있다는 것을 의미한다. | |
객체들은 동일한 메소드명을 이용하여 같은 의미의 응답을 한다. | |
응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스 처럼 수행할 수 있도록 하는 것이다. | |
많은 상이한 클래스들이 동일한 메소드명을 이용하는 능력이다. |
- 모형에서 선언된 draw() 메소드는 할당되는 하위 클래스의 객체에 따라 다양한 변신을 시도하여 서로 다른 결과를 나타낸다.
- 메시지에서 요규한 메소드 (draw())의 매핑을 동적으로 수행한다.
모형 A | 상위 클래스 타입의 객체변수 A선언 |
A = new 타원() | 상위 클래스 타입의 객체변수 A에 타원 클래스의 객체를 생성하여 할당함 |
A.draw() | 타원 클래스에 기술된 draw() 메소드를 수행하여 선언된 타원을 그림 |
A = new 사각향() | 상위 클래스 타입의 객체변수 A에 사각형 클래스의 객체를 생성하여 할당함 |
A.draw() | 사각형 클래스에 기술된 draw() 메소드를 수행하여 선언된 사각형을 그림 |
객체지향의 개념과 객체지향 프로그래밍언어 (JAVA)
예)
class A{
private int result1;
public int add(int x, int y) { //메소드 생성
result1 = x+y;
return result1;
}
public int subtraction(int x , int y){
result1 = x- y;
return result1;
}
}
class B extends A{
private int result2;
public int multi(int x, int y){
result2 = x * y;
return result2;
}
public int divide(int x, int y){
result2 = x/y;
return result2;
}
}
class TestAB
public static void main(String args[]){
int temp;
A objecta = new A();
B objectb = new B();
temp = objecta.add(10,20);
System.out.println("A의 add 수행결과" + temp);
temp = objectb.add(1,2);
System.out.println("B의 add 수행결과" + temp);
temp = objectb.multi(2,2);
System.out.println("B의 add 수행결과" + temp);
temp = objecta.multi(20,20); // objecta 객체는 multi메소드를 가지고 있지않으므로 컴파일 에러발생
System.out.println("A의 add 수행결과" + temp);
}
}
728x90
반응형
LIST
댓글