[컴퓨터 공학] 객체지향과 프로그래밍

조원희·2023년 7월 6일
0

computer-science

목록 보기
2/2

객체지향이란?

객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심
객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞추는 것.


객체지향 프로그래밍(Object-Oriented Programming, OOP)이란?

컴퓨터 프로그램을 설계하는 기법 중 하나로, 컴퓨터 프로그램을 현실 세계의 대상과 그 기능을 객체화하여 표현하는 것


객체지향의 주요 개념

① 객체(Object)

  • 실제로 존재하는 것. 클래스에 정의된 내용대로 메모리에 생성된 것

② 클래스(Class)

  • 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 것
  • 객체를 정의 해놓은 것. 객체의 설계도, 틀

③ 패키지(Package)

  • 클래스를 묶어두는 물리적인 단위. 클래스들의 집합

④ 메시지(Message)

  • 객체에게 어떤 행위를 하도록 지시하는 명령

⑤ 추상화

  • 공통 성질을 추출하여 수퍼클래스로 구성한다.
  • 객체 중심의 안정된 모델을 구축 가능 하며 현실 세계를 자연스럽게 표현.

⑥ 상속(Inheritance)

  • 부모 클래스가 가지고 있는 필드와 메소드를 자식 클래스에서 그대로 물려받아 사용하는 것.

⑦ 캡슐화(Encapsulation)

  • 필요한 속성(Attribute)와 행위(Method)를 하나로 묶고 그중 일부를 외부에서 사용하지 못하도록 은닉하는 것
  • 캡슐화는 객체가 가지고 있는 프로퍼티에 대한 직접적인 접근을 막고, 별도의 메서드를 통해 접근하거나 수정하도록 하는 것이며 이때 접근지정자를 사용.

⑧ 다형성

  • 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질.

⑨ 집단화 | is part of

  • 클래스 간의 구조적인 집약 관계
  • "클래스 A는 클래스 B와 클래스 C로 구성된다"

⑩ 일반화 | is a

  • 클래스들 간의 개념적인 포함 관계
  • "자식 클래스 A는 부모 클래스 B의 일종이다."

객체지향 언어의 4가지 특성

추상화, 상속, 캡슐화, 다형성

객체지향 설계 원칙(SOLID)

① 단일 책임 원칙(SRP, Single Responsibility Principle)

  • 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함

② 개방 폐쇄의 원칙(OCP, Open-Closed Principle)

  • 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다

③ 리스코프 교체(치환)의 원칙(LSP, Liskov Substitution Principle)
컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙

④ 인터페이스 분리 원칙(ISP, Interface Segregation Principle)

  • 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙

⑤ 의존성 역전 원칙(DIP, Dependency Inversion Principle) -의존 관계를 맺을 때 변화하기 쉬운 것 보다 변화하기 어려운 것에 의존하라는 원칙을 의미한다.

객체지향 분석 기법

  • 소프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법

객체지향 분석 기법의 종류

1) 럼바우 분석기법

  • 동적 모델링 기법이 사용될 수 있다.
  • 데이터와 행위를 하나로 묶어 객체를 정의내리고 추상화시키는 작업이라 할 수 있다.
  • 코드 재사용에 의한 프로그램 생산성 향상 및 요구에 따른 시스템의 쉬운 변경이 가능하다.

① 객체(Object) 모델링 | 객체 다이어그램

  • 정보모델링, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정, 객체 다이어그램으로 표시

② 동적(Dynamic) 모델링 | 상태 다이어그램

  • 상태도(상태 다이어그램)을 이용하여 시스템의 행위를 기술

③ 기능(Functional) 모델링 | 자료흐름도

  • 자료 흐름도를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정 표현

2) Coad-Yourdon 방법**

  • 객체, 동적, 기능 모델로 나누어 수행하는 방법이다.
  • 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 방법이다.
  • Use-Case를 강조하여 사용하는 방법이다.
  • E-R 다이어그램을 사용하여 객체의 행위를 모델링
  • 객체 식별, 구조 식별

3) Booch 방법

  • 미시적, 거시적 개발 프로세스를 모두 사용하는 분석방법.
  • 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의

4) Jacobson 방법

  • Use Case를 사용하여 분석
  • 사용자, 외부 시스템, 다른 요소들이 시스템과 상호 작용 하는 방법을 기술

5) Wirfs-Brock

  • 분석과 설계간 구분이 없으며, 고객 명세서를 평가하여 설계 작업까지 연속적으로 수행

profile
안드로이드 개발자 wonny 입니다 :)

0개의 댓글