본문 바로가기
전공공부/소프트웨어공학

객체지향의 원리

by 으노으뇨 2021. 11. 1.
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

'전공공부 > 소프트웨어공학' 카테고리의 다른 글

객체지향 설계  (0) 2021.11.08
객체지향 기법의 생명주기  (0) 2021.11.08
객체지향 방법론  (0) 2021.11.01
소프트웨어 설계  (0) 2021.10.27
기출문제(1)  (0) 2021.10.13

댓글