1-3 018 객체지향(Object-Oriented) [A]

이지우·2024년 4월 9일
0

정보처리기사

목록 보기
18/31
post-thumbnail

객체지향의 개요

현실의 개체(Entity)를 기계 부품처럼 하나의 객체(Object)로 만들어 객체들을 조립해서 작성할 수 있는 기법

  • 구조적 기법의 문제점으로 인한 소프트웨어 위기(트렌드 따라가기)의 해결책으로 채택
  • 소프트웨어의 재사용 및 확장 용이
  • 빠르게 개발 가능
  • 유지보수 쉬움
  • 복잡한 구조 단계적/계층적으로 표현
  • 멀티미디어 데이터 및 병렬 처리 지원
  • 현실 세계 모형화하여 사용자와 개발자가 이해하기 쉬움
  • 주요 구성 요소, 개념
    : 객체(Object), 클래스(Class), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 연관성(Relationship)

객체(Object) : 속성(자료구조) + 행위(메서드, 함수)


객체 (Object)

데이터와 함수를 묶어 놓은(캡슐화) 소프트웨어 모듈

데이터
: 객체가 가지고 있는 정보
: 속성이나 상태, 분류
: 속성(Attribute), 상태, 변수, 상수, 자료구조 라고도 함

함수
: 객체가 수행하는 기능
: 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘
: 객체의 상태를 참조하거나 변경하는 수단이 되는 것
: 메소드(Method, 행위), 서비스(Service), 동작(Operation), 연산이라고도 함

특성

  • 독립적으로 식별 가능한 이름

  • 상태(State)는 시간에 따라 변함

  • 객체간에 상호 연관성에 의한 관계가 형성됨

  • 메시지(Message)의 집합을 행위라고 하며 객체는 행위의 특징을 나타냄

  • 일정한 기억장소를 가지고 있음

  • 메소드: 다른 객체로부터 메시지를 받았을 때 정해진 기능 수행


클래스

공통된 속성과 연산(행위)를 갖는 객체의 집합

  • 객체들이 갖는 속성과 연산을 정의하고 있는 틀
  • 객체지향 프로그램에서 데이터를 추상화하는 단위
  • 인스턴스(Instance): 각각의 개체
    인스턴스화(Instantiation): 새로운 객체 생성
  • 동일 클래스에 속한 각각의 객체(인스턴스)들은 공통된 속성과 행위를 가지고 있지만 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러 가지 객체를 나타내게 됨
    ex) 기능: 도색하기 / 속성: 빨, 노, 파
  • 최상위 클래스: 상위 클래스를 갖지 않는 클래스
  • 슈퍼 클래스(Super Class): 특정 클래스의 상위 클래스
  • 서브 클래스(Sub Class): 특정 클래스의 하위 클래스

캡슐화

데이터(속성)와 함수를 하나로 묶은 것

  • 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적임
  • 외부 모듈의 변경으로 인한 파급 효과가 적음
  • 재사용이 용이함
  • 상대 객체의 세부 내용은 알 필요가 없어 인터페이스 단순
  • 객체 간의 결합도 낮아짐

상속

상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것

  • 하위 클래스는 상위 클래스의 모든 속성과 연산을 즉시 자신의 속성으로 사용 가능

  • 하위 클래스는 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용 가능

  • 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용, 즉 소프트웨어의 재사용(Reuse)을 높이는 중요한 개념

  • 다중 상속(Multiple Inheritance): 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것


다형성

객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력

  • 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함

  • 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것
    ex) '+'연산자 - 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능으로 사용


연관성(Relationship)

두 개 이상의 객체들이 상호 참조하는 관계

is member of
: 연관화(Association)
: 2개 이상의 객체가 상호 관련되어 있음

is instance of
: 분류화(Classfication)
: 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것

is part of
: 집단화(Aggregation)
: 관련 있는 객체들을 묶어 하나의 상위 객체 구성

is a

  • 일반화(Generalization)
    : 공통적인 성질들로 추상화한 상위 객체 구성
  • 특수화/상세화(Specialization)
    : 상위 객체를 구체화하여 하위 객체 구성
profile
노력형 인간

0개의 댓글