코딩일기/자격증

정보처리기사 소프트웨어 개발 : 객체지향(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)

객체지향 프로그래밍은 각 요소를 객체로 만들어 조립하여 소프트웨어를 개발하는 기법입니다.

구성 요소

  1. 객체 (Object)
    • 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
    • 데이터: 객체가 가진 정보로 속성이나 상태 등을 의미
    • 함수: 객체가 수행하는 기능으로, 객체의 데이터를 처리하는 알고리즘, 메소드,서비스,동작,연산이라고도 한다
    • 특성:
      • 독립적으로 식별 가능한 이름을 가짐
      • 상태(State)는 시간에 따라 변할 수 있음
      • 객체들 간의 상호 연관성 존재
      • 객체는 일정한 기억장소를 가짐
      • 메시지(Message)에 반응하여 행위를 나타냄 : 메세지란 객체들 간에 상호작용을 하는 데 사용되는 수단으로 객체에 어떤 행위를 하도록 지시하는 명령을 말한다
  1. 클래스 (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
반응형