[애플리케이션 설계] 객체지향(Object Oriented)

당고짱·2023년 5월 13일
0

SW design and develop

목록 보기
10/11
post-thumbnail

객체지향

소프트웨어를 개발할 때 객체들을 조립해서 작성할 수 있는 기법

  • 재사용 및 확장이 용이
  • 빠르게 개발 가능 및 유지보수가 쉬움
  • 복잡한 구조를 단계적, 계층적으로 표현
  • 사용자와 개발자가 쉽게 이해할 수 있음

객체(Object)

데이터함수를 묶어 놓은(캡슐화) 하나의 소프트웨어

  • 데이터 : 객체가 가지고 있는 정보 (속성, 상태, 분류 등)
  • 함수 : 객체가 수행하는 기능 (= 메소드, 서비스, 동작, 연산 등)

특성

  • 독립적으로 식별 가능한 이름을 가짐
  • 상태(객체가 가질 수 있는 조건)는 시간에 따라 변함
  • 객체와 객체는 상호 연관성에 의한 관계 형성
  • 객체는 행위(객체가 반응할 수 있는 메시지의 집합)의 특징을 나타냄
  • 일정한 기억 장소를 ㅏㄱ짐

클래스(class)

공통된 속성과 연산(행위)를 갖는 객체의 집합. 객체의 일반적인 타입.

  • 각각의 객체들이 갖는 속성과 연산을 정의하는 틀
  • 데이터를 추상화하는 단위
  • 인스턴스 : 클래스에 속한 각각의 객체
  • 인스턴스화 : 클래스로부터 새로운 객체를 생성하는 것
  • 동일 클래스의 인스턴스들은 공통된 속성과 행위를 가지면서, 속성에 대한 정보가 달라 동일 기능을 하는 여러 가지 객체를 나타내게 됨
  • 최상위 클래스 : 상위 클래스를 갖지 않는 클래스
  • 슈퍼 클래스 : 특정 클래스의 상위(부모) 클래스
  • 서브 클래스 : 특정 클래스의 하위(자식) 클래스

캡슐화(Encapsulation)

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

  • 인터페이스를 제외한 세부 내용이 은폐되어 외부 접근이 제한적 -> 외부 모듈 변경으로 인한 파급 효과 적음
  • 캡슐화된 객체들은 재사용성 용이
  • 인터페이스가 단순해짐
  • 객체 간 결합도가 낮아짐

상속(Inheritance)

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

  • 하위 클래스는 상위 클래스의 모든 속성과 연산을 재정의하지 않고 자신의 속성으로 사용 가능
  • 하위 클래스는 새로운 속성과 연산을 첨가하여 사용 가능
  • 소프트웨어의 재사용을 높이는 중요 개념
  • 다중 상속 : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것

다형성(Polymorphism)

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

  • 동일한 메소드명을 사용해 같은 의미의 응답을 함
  • 오버로딩(overloading) : 메소드의 이름은 같지만 인자의 개수를 달리하여 여러 기능 정의 가능
  • 오버라이딩(overriding) : 상위 클래스의 메소드와 이름은 같지만 메소드 내부 실행 코드를 달리하여 자식 클래스에서 재정의하여 사용 가능

연관성(Relationship)

두 개 이상의 객체(클래스)들이 상호 참조하는 관계

  • is member of (연관화) : 2개 이상의 객체가 상호 관련되어 있음을 의미
  • is instance of (분류화) : 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것
  • is part of (집단화) : 관련 있는 객체들을 묶어 하나의 상위 객체 구성
  • is a (일반화) : 공통적인 성질들로 추상화한 상위 객체를 구성
  • is a (특수화, 상세화) : 상위 객체를 구체화하여 하위 객체를 구성
profile
초심 잃지 말기 🙂

0개의 댓글