oop (객체지향이란)?

14
객객객객 (OOP) 2015-07-14 / 객객객 객 객객객 객객객객객 객객객객객객객 . OOP 객객객 객객객객객 , 객객 oop 객 객객 객객객 …

Upload: -

Post on 21-Feb-2017

582 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Oop (객체지향이란)?

객체지향 (OOP)

2015-07-14 / 장철운

이 문서는 나눔글꼴로 작성되었습니다 .

OOP 언어를 사용하면서 , 정작 oop 가 뭔지 몰랐다 …

Page 2: Oop (객체지향이란)?

OOP

컴퓨터프로그램을 명령어의 목록으로 보는 시각에서 벗어나 , 여러 개의 독립된 단위(Object) 들의 모임으로 파악하고자 하는 것 !

Ob-ject

Ob-ject Mes-

sage각각의 독립된 단위 (Object) 들은 서로 메시지를 주고 받으며 데이터를 처리함

EX) Name Jang = New Name(); // 객체 생성 Jang.study(); // < 명령어의 목록이 아닌 Jang 이라는 객체를 통해 프로그래밍 !

Page 3: Oop (객체지향이란)?

Why

Oop 의 특징을 통해 유연성과 확장성을 보장할 수 있기 때문 !

왜 oop 언어를 사용하지 ?

우리가 OOP 를 사용하는 중요한 이유 중 하나는 기존의 시스템에 새로운 기능을 추가하거나 이미 존재하는 기능을 확장 하는 것이 다른 프로그램 언어보다 용이 하기 때문이다 . 

Page 4: Oop (객체지향이란)?

특징

Oop 의 특징을 통해 유연성과 확장성을 보장할 수 있기 때문 ! OOP 의 특징으로는

크게 4 가지가 있다 .1. 동적 바인딩2. 상속3. 다형성4. 캡슐화

오오 ! 얘는 들어봄 !!

Page 5: Oop (객체지향이란)?

특징 –바인딩얘 오늘 처음 들어봄 .. 뭐야 …

바인딩 ? 프로그래밍 용어

각종 값들이 확정되어 더 이상 변경할 수 없는 구속 (bind) 상태가 되는 것 .Ex) 변수 , 배열 , 라벨 , 절차 등의 명칭 ( 식별자 ) 이 그 대상인 메모리 주소 , 데이터형 또는 실제 값으로 배정되는 것이 이에 해당한다 .

= 함수를 호출하는 부분에 함수가 위치한 메모리 번지로 연결시켜 주는 것이 바인딩 (Binding)!!

Page 6: Oop (객체지향이란)?

특징 –바인딩

바인딩은 2 가지 종류로 나뉜다 .

정적 바인딩

컴파일링 또는 링크시 확정되는 바인딩을 뜻함

동적 바인딩

프로그램의 실행되는 과정에서 바인딩되는 것보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩

보충 : 컴파일 시간에 완료되어 변화하지 않는 바인딩

설명이 좀 부족한데 … ?

Page 7: Oop (객체지향이란)?

특징 – 정적 바인딩

정적 바인딩

컴파일링 또는 링크시 확정되는 바인딩을 뜻함보충 : 컴파일 시간에 완료되어 변화하지 않는

바인딩 - 런타임 중 주소변경 x

정적 타입언어의 장점은 안정성과 효율성이다 .컴파일시에 타입의 많은 정보를 결정 (Binding)하기 때문에 빠르고 , 안정성을 기여할 수 있다 .

Ex) private, final, static 함수 <- static 의 특징을 보면 이해 가능 !

Page 8: Oop (객체지향이란)?

특징 – 동적 바인딩

동적 바인딩은 일반적으로 정적 바인딩에 비해 속도가 느리고 주소를 저장하기 위한 테이블을 사용하기에 공간낭비가 생긴다 .

동적 바인딩

프로그램의 실행되는 과정 ( 런타임 )에서 바인딩되는 것보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩

근데 왜 oop 는 얘를 쓰지 ?

다형성 때문 !!!

Page 9: Oop (객체지향이란)?

특징 – 상속다형성전에 상속에 대해 …

사전적 의미 사람의 사망으로 인한 재산상 법률관계의 포괄적 승계 .

OOP 에서의 상속이란 !! 상위클래스 ( 부모 ) 가 그의 속성 ( 함수 등 ) 을 하위클래스 ( 자식 ) 에게 넘겨주는 것을 의미한다 .

여기까진 이해 OK ?

Page 10: Oop (객체지향이란)?

특징 – 다형성

단 , 현실에서도 그렇듯이 부모가 준 속성을 자식이 그대로 받지 않을 수 있다 . 엄마 미안 ..

Cut() 자르

다 !

의사

미용사

수술 할 때 , 매스를 통한 cut

머리를 자를때의 Cut

부모(JOB)

자식

Page 11: Oop (객체지향이란)?

특징 – 다형성

위와 같이 오버라이딩을 통해 같은 명령에 대해 다른 반응을 보이는 특징을 다형성이라고 한다 . 이러한 다형성이 가능한

원인이 동적 바인딩때문 !

JoB job1 = new 의사 ();JoB job2 = new 미용사 ();job1.cut(); // >> 의사의 cut 이 실행job2.cut(); // >> 미용사의 cut 이 실행

Page 12: Oop (객체지향이란)?

특징 – 다시 동적 바인딩

만약 정적 바인딩이라면 이 상황에서 JOB 의 cut 이 실행 . 다형성을 사용할 수 없다 !!

JoB job1 = new 의사 ();job1.cut();

때문에 OOP 에서 동적 바인딩을 사용 !! 바인딩 끗 !(

캡슐화는 나중에 )

Page 13: Oop (객체지향이란)?

OOP 마무리

각각의 독립된 단위 (Object) 들은 서로 메시지를 주고 받으며 데이터를 처리함

소프트웨어 공학의 관점에서 볼 때 S/W 의 질을 향상하기 위해 강한 응집력과 약한 결합력을 지향한다 .

OOP 의 경우 방금 설명한 특징들을 이용하여 응집력을 강화 , 클래스간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다 .

Ob-ject

Ob-ject Mes-

sage

Page 14: Oop (객체지향이란)?

이 문서는 나눔글꼴로 작성되었습니다 .

참고 : 뇌를 자극하는 자바 http://secretroute.tistory.com/entry/140819 ( 바인딩 )+ 옆에 있는 선배