중 | 객체지향 프로그래밍 특징 | [객체지향] 현실 세계에서 개체(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 |