기본 콘텐츠로 건너뛰기

0.09 Object Oriented Programming (1)

Object Oriented Programming (1)



0. 개요
1. OOP
2. object
3. class
4. abstraction
5. generalization, specialization, hierarchy
6. polymorphism(1)


0. 개요

OOP 개요


1. 객체지향 프로그래밍(OOP)

1) 현실 세계를 시스템에 의존하여 표현하는 방법론 중 하나
    : 영역에 따라 요구되는 객체가 달라짐

2) 현재 및 미래의 프로그래밍 언어 패러다임
3) 현실 세계의 모든 것을 객체로 생각

예) 병원 - 의사, 간호사, 환자, 응급실, 중환자실, 의료기구, 의료비품... 등

- 장점
  코드의 재사용성이 높음
  코드 관리가 용이
  제어자와 메서드를 통해 데이터를 보호가능
  코드 중복 제거 가능


2. 객체: 현실 세계의 모든 것

 - 조건: 식별성 + 상태 + 행위

예) 물리적인 객체, 개념적인 객체(신용카드 결제), 소프트웨어적 객체(배열)


3. 클래스

 - 객체가 추상화 과정을 거쳐 공통된 속성, 행위, 관계, 의미를 갖는 객체의 모임
1) 애플리케이션 클래스: main 속성이 포함된 실행 클래스
2) BEAN: 상태, 속성 등을 표현한 클래스 (실행기능 없음)


4. 추상화

 - 공통 상태의 값, 행위 등을 추출
 - 해당영역에 따라 달라짐 = 문제영역에 의존적

예) 병원에서 사람은 의사, 간호사, 환자... // 학교에서 사람은 교사, 학생, 직원...


5. 일반화와 구체화 그리고 계층화

일반화, 구체화, 계층화 도식

 - 구체적인 코딩은 유지, 관리가 힘들다
 - 공통적인 속성은 일반적인 곳에 있다
 - 추상화 과정을 통해 공통점을 추출해내어 일반적인 코딩을 하면 유지, 관리가 쉽다
 - 일반적인 클래스와 구체적 관리 사이에는 "관계"가 존재한다
 - "관계"가 존재하기에 "공유", "계층화"의 개념이 언급된다


6. polymorphism

: 동일한 인터페이스를 사용할 수 있도록 함

 - 객체지향 프로그램(OOP)에서 아주 중요한 개념
 - 오버로딩, 오버라이딩, 상속, 형변환, API 등에서 이용되는 개념
 - 동일한 조작법으로 동작시키지만 동작방법은 다르다
   = 여러가지 데이터를 다룰 수 있음

예) 누구나 키보드의 사용법은 "키를 누른다"이다. 그러나 키를 누르더라도 enter 키는 실행, esc키는 취소의 의미를 갖는다.