코딩일기/자격증
정보처리기사 소프트웨어 개발 : 객체지향(Object-Oriented)의 구성요소와 특징(객체 / 클래스)(캡슐화 / 상속 / 다형성 / 연관성 / 정보은닉 / 추상화)
jhy_2023
2024. 7. 10. 12:49
728x90
반응형
728x90
1. 객체지향 개념을 활용한 소프트웨어 구현과 관련한 설명 중 틀린 것은?
① 객체(Object)란 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
② JAVA에서 정보은닉(Information Hiding)을 표기할 때 private의 의미는 '공개'이다.
③ 상속(Inheritance)은 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 전체 구조를 파악하기 쉽다는 장점이 있다.
④ 같은 클래스에 속하는 개개의 객체이자 하나의 클래스에서 생성된 객체를 인스턴스(Instance)라고 한다.
정답 : ②
① 객체(Object)란 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
- 설명: 객체는 데이터와 그 데이터를 조작하는 메소드를 함께 포함하는 독립된 존재입니다. 이는 객체지향 프로그래밍의 기본 원칙으로, 캡슐화를 통해 객체를 구성합니다.
② JAVA에서 정보은닉(Information Hiding)을 표기할 때 private의 의미는 '공개'이다.
- 설명: private 접근 제어자는 해당 멤버가 클래스 내부에서만 접근 가능하도록 설정합니다. 이는 정보은닉의 중요한 부분으로, 클래스 외부에서는 private 멤버에 접근할 수 없습니다.
- private의 의미는 '비공개'입니다. 따라서, 이 설명은 틀렸습니다.
- 정보 은닉(Information Hiding): 객체지향 프로그래밍에서 클래스의 내부 구현을 숨기고, 외부에서 접근 가능한 인터페이스만 제공하여 시스템의 모듈성을 높이는 원칙입니다. private 키워드는 이러한 정보 은닉을 구현하는 주요 수단입니다.
③ 상속(Inheritance)은 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 전체 구조를 파악하기 쉽다는 장점이 있다.
- 설명: 상속은 클래스 간의 관계를 정의하여 코드의 재사용성과 체계적인 구조를 제공하는 장점이 있습니다. 이를 통해 클래스 계층 구조를 쉽게 이해할 수 있습니다.
- 상속(Inheritance): 상위 클래스의 속성과 메소드를 하위 클래스가 물려받는 메커니즘으로, 코드의 재사용성과 확장성을 높이는 중요한 객체지향 원칙입니다.
④ 같은 클래스에 속하는 개개의 객체이자 하나의 클래스에서 생성된 객체를 인스턴스(Instance)라고 한다.
- 설명: 클래스는 객체의 청사진이며, 이 클래스로부터 생성된 각 객체를 인스턴스라고 합니다. 여러 인스턴스가 동일한 클래스에서 생성될 수 있습니다.
- 인스턴스(Instance): 클래스의 구체적인 구현물로, 클래스의 정의에 따라 메모리에 할당된 객체를 의미합니다.
객체지향 프로그래밍 (OOP)
객체지향 프로그래밍은 각 요소를 객체로 만들어 조립하여 소프트웨어를 개발하는 기법입니다.
구성 요소
- 객체 (Object)
- 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
- 데이터: 객체가 가진 정보로 속성이나 상태 등을 의미
- 함수: 객체가 수행하는 기능으로, 객체의 데이터를 처리하는 알고리즘, 메소드,서비스,동작,연산이라고도 한다
- 특성:
- 독립적으로 식별 가능한 이름을 가짐
- 상태(State)는 시간에 따라 변할 수 있음
- 객체들 간의 상호 연관성 존재
- 객체는 일정한 기억장소를 가짐
- 메시지(Message)에 반응하여 행위를 나타냄 : 메세지란 객체들 간에 상호작용을 하는 데 사용되는 수단으로 객체에 어떤 행위를 하도록 지시하는 명령을 말한다
- 클래스 (Class)
- 공통된 속성과 연산을 갖는 객체의 집합
- 특징:
- 객체들이 갖는 속성과 연산을 정의
- 데이터를 추상화하는 단계
- 클래스에 속한 객체를 인스턴스(Instance)라 함
- 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라 함
- 최상위 클래스는 상위 클래스를 갖지 않음
- 슈퍼 클래스(Super Class): 상위(부모) 클래스
- 서브 클래스(Sub Class): 하위(자식) 클래스
특징
- 캡슐화 (Encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 객체 내부의 구현이 외부에 은폐(정보 은닉)
- 외부 모듈의 변경으로 인한 파급효과가 적음
- 객체들은 재사용이 용이
- 메시지를 주고받을 때 상대 객체의 세부정보를 알 필요가 없으므로 인터페이스가 단순해짐
- 결합도가 낮아짐
- 상속 (Inheritance)
- 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 상위 클래스의 속성과 연산을 재정의하지 않고 사용
- 하위 클래스는 새로운 속성과 연산을 추가 가능
- 소프트웨어 재사용성을 높임
- 다중 상속 (Multiple Inheritance): 한 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
- 다형성 (Polymorphism)
- 하나의 메시지에 대해 각각의 객체가 고유한 방법으로 응답할 수 있는 능력
- 동일한 메소드명을 사용하여 다른 클래스의 인스턴스가 각기 다른 방식으로 동작
- 응용 프로그램에서 하나의 함수나 연산자가 서로 다른 클래스의 인스턴스를 같은 클래스처럼 수행
- 연관성 (Association)
- 두 개 이상의 객체들이 상호 참조하는 관계
- 종류:
- is member of: 연관화 (객체들이 상호 관련됨)
- is instance of: 분류화 (동일한 형의 특성을 갖는 객체들을 구성)
- is part of: 관련 있는 객체들을 묶어 상위 객체를 구성
- is a: 일반화 및 특수화/상세화 (상위 객체를 추상화하거나 구체화하여 하위 객체를 구성)
- 정보은닉 (Information Hiding)
- 캡슐화에서 가장 중요한 개념으로 다른 객체에 자시느이 정보를 숨기는 것
- 연산만을 통해 접근을 허용
- 각 객체의 수정이 다른 객체에 주는 사이드 이펙트를 최소화하는 기술
- 추상화 (Abstraction)
- 불필요한 부분을 생략, 객체 속성 중 가장 중요한 것에 중점을 두어 모델화하는 것
- 완전한 시스템 구축 전, 그 시스탬과 유사한 모델을 만들어 여러 요인들을 테스트할 수 있음
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형