객체지향 프로그래밍 특징 [객체지향] 현실 세계에서 개체(Entity)를 속성(Attribute)과 메소드(Method)를 결합된 형태의 객체(Object)로 표현하는 개념
[구성요소] 클래스, 객체, 메소드, 인스턴스
[특징] 캡슐화, 추상화, 다형성, 정보은닉, 상속성

클객메인
캡추다정상
토픽 이름() 객체지향 프로그래밍 특징(캡슐화, 추상화, 다형성, 정보은닉, 상속성)
분류 SW > 개발방법론 > 객체지향 프로그래밍 특징
키워드(암기) 캡슐화, 추상화, 다형성, 정보은닉, 상속성
암기법(해당경우) 캡추다정상

 

기출문제

번호 문제 회차
1 5. 소프트웨어 설계에 있어서 중심이 되는 원리인 추상화, 정보은닉, 단계적 분해, 모듈화에 대하여 설명하시오. 118_관리_2
2 4. Information Hiding 114_컴시응_1
3 5. 객체 지향적 프로그래밍에서 재사용성을 구현하려면 클래스의 추상화(abstraction), 정보은폐(encapsulation) 및 정보의 상속(inheritance) 같은 개념이 필요하다. 이와 관련하여 클래스의 메소드는 어떤 방법으로 작성되어야 하는지 설명하시오. 90_조직응용_4교시
4 3. 다음의 문제에 대하여 설명하시오.
. 다형성의 개념
. 사례 기반한 Overloading Overriding 설명
. Overloading Overriding의 비교
모의_2017.04_응용_2
5 객체지향 프로그래밍에서 다형성 기법은 중요한 특징 중 하나이다. 다음 다형성에 대한 질문을 설명하시오.
. 다형성의 정의와 특징
. 다형성의 유형
. 다형성의 다이어그램과 코드
모의_2015.10_응용_2교시
6 객체지향 설계와 관련된 다음 질문에 답하시오.
. 다형성에 대하여 설명하시오.
. 객체지향 설계원칙 LSP(Liskov. Substitution Principle) 대하여 설명하시오.
. Strategy Pattern 대하여 설명하시오.
모의_2015.05_관리_2교시
7 객체지향 언어의 특징과 설계원칙을 기술하고, 구조적 기법과 차별화되는 개념을 설명하시오. 또한 private, public 접근 제어자(Access Modifier)를 사용하여 외부로부터 데이터를 보호하기 위한 정보은닉 방법을 실제 객체 지향 언어(JAVA) 간단히 구현하시오. 모의_2014.01_관리_2교시
8 객체지향 다형성과 상속성을 비교 설명하시오 모의_2013.10_통합_1교시
9 객체지향개념 중 다형성의 개념 및 구현기법에 대하여 설명하시오. 모의_2012.07_관리_1교시
10 6. 객체지향 프로그래밍에서 다형성(Polymorphism)에 대하여 설명하시오. 모의_2011.12_관리_1교시
11 Polymorphism 대하여 설명하시오. 모의_2009.12_조직_1교시
12 information hiding                                모의_2009.09_공통_1교시
13 10.Polymorphism 설명하시오. 모의_2009.08_관리_1교시

 

I. 객체지향(Object Oriented)의 개요

  . 객체지향의 정의

- 현실 세계에서 개체(Entity) 속성(Attribute) 메소드(Method) 결합된 형태의 객체(Object) 표현하는 개념

- 구현대상을 하나의 객체로 보고, 객체를 객체와 객체들 간의 관계로 모델링하는 방법

 

  . 객체(Object Oriented) 구성 구성요소

- Class간의 Relation, Object간의 상호작용은 메시지를 통해 이루어짐.

 

특징 설명
클래스
(Class)
-객체의 타입을 정의하는 템플릿
-여러 객체가 공통적으로 가지고 있는 속성과 메소드를 클래스로 정의하고 클래스에 의해 객체가 재 정의 되는 구조

객체
(Object)
-클래스의 인스턴스(실제로 메모리상에 할당된 것)
- 자신 고유의 데이터(Attribute)를 가지며 클래스에서 정의한 행위(Behavior) 수행
- 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용

메소드
(Method)
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체에 명령을 내리는 메시지라 있음.
- 객체 간의 통신은 메시지를 통해 이루어 .
인스턴스
(Instance)
- 프로그램에서 클래스를 통해 만든 실제의 실행 객체, 프로그램의 실행 단계에서 나타냄.

 

II. 객체지향(Object Oriented) 프로그래밍의 특징(기법)

. 캡슐화(Encapsulation)

구분 상 세 내 용
정의 - 객체의 속성(Data Fields) 행위(메소드, Methods) 하나로 묶고, 실제 구현 내용 일부를 일부에 감추어 은닉하는 객체지향의 특성
- 객체 정보은닉의 확장 캡슐화
특징 - 클래스를 선언하고 클래스를 구성하는 객체에 대하여 public 선언 외부에서 사용가능, private 선언 불가
- 메시지 통해 접근
장점 - 소프트웨어의 유지보수 생산성 증대
- 재사용성이 높은 소프트웨어 개발
- 정보은닉으로부터 내부자료에 대한 일관성 유지
Code

. 추상화(Abstraction)

구분 상 세 내 용
정의 - 현실세계의 사실(물체 ) 객체로 공통적인 속성과 기능을 묶어 이름을 부여하는 기법
- 공통 성질을 추출하여 슈퍼클래스를 설정하는 특성
특징 객체지향 언어에서는 클래스를 이용함으로써 데이터와 프로세스를 함께 추상화의 구조에 넣어 보다 완벽한 추상화 실현
1) 기능 추상화(Method 부여): 클래스 메소드를 정의(obj.getName())
2) 데이터 추상화(Type 부여): 객체 클래스 자체를 테이터 타입으로 사용(String, Class)
3) 제어 추상화: 제어행위에 대한 개념화, 명령 이벤트(if, for, while)
장점 복잡한 프로그램을 간단하게 해줌
Code public class Clock{
    int hour;
    int minute;
    int second;
public void display(){
    //시간 출력
  }
}

. 다형성(Polymorphism)

구분 상 세 내 용
정의 - 같은 함수(Method) 이름으로, 여러 개의 메서드를 만들 있는 기법
특징 - 동적바인딩 : 프로그램이 실행되는 시점에 호출할 번지나 함수를 연결함
- 확장성 지원 : 수직적 확장성인 Overriding 수평적 확장인 Overloading 지원
- 재사용성 지원 : 기존에 구현된 부분은 동일하게 사용하고 필요한 부분만 수정하여 활용 가능
장점 - 확장성 : 기존 코드(부모 클래스) 수정하지 않고, 새로운 기능 새로운 클래스 추가 쉬움
- 유연성 : 실제 실행될 오퍼레이션이 실행 시에 결정. Dynamic Binding

   

- 오버라이딩과 오버로딩 특징

구분 오버라이딩(overriding) 오버로딩(overloading)
메소드 이름 같아야 함 같아야 함
파라미터 개수
자료형
같아야 함 달라야 함


같을 경우 자료형이 달라야 함
리턴 타입 같아야 함 상관없음
기타 상위 클래스에 메소드 존재 상위 클래스에 같은 이름의 메소드가 없어야 함

 

- 오버라이딩과 오버로딩 사례

구분 Overloading Overriding
개념 메소드의 이름은 같으나 인자의 타입 및 개수가 다른 경우, 동일 클래스의 동일 메소드로 매개변수 다르게 하여 정의하는 기법 상속관계에 있는 두 클래스 중 하위클래스에서 상위클래스의 메소드를 재정의하여 사용하는 기법
클래스
다이어그램
샘플코드

- Java에서는 가상(virtual) 따로 선언하지 않아도 되나 C++에서는 다형성을 구현하기 위해서는 상위 클래스에 멤버 메소드를 가상(virtual)으로 선언해야 .

 

. 정보은닉(Information Hiding)

구분 상 세 내 용
정의 - 캡슐화 방법으로 class 내부 정보를 은닉하고, 접근 제한의 단계를 두어 보안적인 구현 가능
- 클래스 내부에서 사용되는 변수(필드) 들을 private 이나 protected 등으로 선언해 줌으로, 자기 클래스, 혹은 자식 클래스 외에는 직접적으로 제어를 불가능하게 해주는 성질
- 복잡하거나 변경가능 한 부분을 캡슐 내부에 감추고 외부에는 추상화되고 변경가능성이 낮은 인터페이스만을 제공하는 객체지향의 원리
특징 - 복잡성 제거 : 외부에는 불필요한 내부적으로만 사용되는 부분을 감춰서 복잡성을 줄임
- Data 보호 : 외부로부터 데이터를 보호하기 위함
Code

- 접근제어자의 종류

. 상속성(Inheritance)

 

구분 상 세 내 용
정의 - 상속은 클래스에서만 통용되는 개념으로 미리 만들어 둔 클래스를 다시 이용하는 방법
특징 - 하위 클래스가 상위 클래스를 상속 받았을 때, 하위 클래스는 상위 클래스의 모든 권한 소유
- 상속을 받는 순간 현재의 클래스는 곧 상위 클래스에서 출발
- 단일 : 부모와 자식 클래스 간의 관계가 수퍼클래스와 서브클래스로 유지
- 다중 : 하나의 클래스가 하나 이상의 클래스로부터 상속
- 반복 : 같은 조부모 클래스로부터 상속 받은 부모 클래스로부터 상속
Code

    - C++에서는 콜론(:) 상속의 키워드로 사용하며, 자바에서는 extends라는 키워드를 사용

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

(외부)EPMO  (0) 2024.03.11
객체지향 설계의 원리  (0) 2024.03.10
Architecture  (0) 2024.03.08
번다운차트  (0) 2024.03.07
CI, CD  (0) 2024.03.06

+ Recent posts