ݺߣ

ݺߣShare a Scribd company logo
객체지향(OOP)
2015-07-14 / 장철운
이 문서는 나눔글꼴로 작성되었습니다.
OOP언어를 사용하면서, 정작 oop가 뭔지 몰랐다 …
OOP
컴퓨터프로그램을 명령어의 목록으로 보는 시각에서 벗어나, 여러 개의 독립된 단위
(Object)들의 모임으로 파악하고자 하는 것 !
ObjectObject
Message
각각의 독립된 단위(Object)들은 서로 메시지를 주고 받으며 데이터를 처리함
EX) Name Jang = New Name(); // 객체 생성
Jang.study(); // < 명령어의 목록이 아닌 Jang 이라는 객체를 통해 프로그래밍 !
Why
Oop의 특징을 통해
유연성과 확장성을 보장할 수 있기 때문!
왜 oop언어를 사용하지 ?
우리가 OOP를 사용하는 중요한 이유 중 하나는 기존의 시스템에 새로운 기능을 추가하거
나 이미 존재하는 기능을 확장 하는 것이 다른 프로그램 언어보다 용이 하기 때문이다.
특징
Oop의 특징을 통해
유연성과 확장성을 보장할 수 있기 때문!
OOP의 특징으로는 크게 4가지가 있다.
1. 동적 바인딩
2. 상속
3. 다형성
4. 캡슐화
오오 ! 얘는 들어봄 !!
특징 –바인딩
얘 오늘 처음 들어봄 .. 뭐야 …
바인딩 ? 프로그래밍 용어
각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것.
Ex) 변수, 배열, 라벨, 절차 등의 명칭(식별자)이 그 대상인 메모리 주소, 데이터형 또는 실제 값으로 배정되는 것이 이에 해당한다.
= 함수를 호출하는 부분에 함수가 위치한
메모리 번지로 연결시켜 주는 것이 바인딩(Binding)!!
특징 –바인딩
바인딩은 2가지 종류로 나뉜다.
정적 바인딩 컴파일링 또는 링크시 확정되는 바인딩을 뜻함
동적 바인딩 프로그램의 실행되는 과정에서 바인딩되는 것
보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩
보충 : 컴파일 시간에 완료되어 변화하지 않는 바인딩
설명이 좀 부족한데 …?
특징 – 정적 바인딩
정적 바인딩 컴파일링 또는 링크시 확정되는 바인딩을 뜻함
보충 : 컴파일 시간에 완료되어 변화하지 않는 바인딩- 런타임 중 주소변경x
정적 타입언어의 장점은 안정성과 효율성이다.
컴파일시에 타입의 많은 정보를 결정(Binding)하기 때문에 빠르고, 안정성을 기여
할 수 있다.
Ex) private, final, static 함수 <- static의 특징을 보면 이해 가능 !
특징 – 동적 바인딩
동적 바인딩은 일반적으로 정적 바인딩에 비해 속도가 느리고 주소를 저장하기 위한
테이블을 사용하기에 공간낭비가 생긴다.
동적 바인딩 프로그램의 실행되는 과정(런타임)에서 바인딩되는 것
보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩
근데 왜 oop는 얘를 쓰지 ?
다형성 때문 !!!
특징 – 상속
다형성전에 상속에 대해 …
사전적 의미
사람의 사망으로 인한 재산상 법률관계의 포괄적 승계.
OOP에서의 상속이란 !!
상위클래스(부모)가 그의 속성(함수 등)을
하위클래스(자식)에게 넘겨주는 것을 의미한다.
여기까진 이해 OK ?
특징 – 다형성
단, 현실에서도 그렇듯이
부모가 준 속성을 자식이 그대로 받지 않을 수 있다.
엄마 미안 ..
Cut()
자르다 !
의사
미용사
수술 할 때, 매스를 통한 cut
머리를 자를때의 Cut
부모(JOB) 자식
특징 – 다형성
위와 같이 오버라이딩을 통해 같은 명령에 대해
다른 반응을 보이는 특징을 다형성이라고 한다.
이러한 다형성이 가능한 원인이 동적 바인딩때문!
JoB job1 = new 의사();
JoB job2 = new 미용사();
job1.cut(); // >> 의사의 cut이 실행
job2.cut(); // >> 미용사의 cut이 실행
특징 – 다시 동적 바인딩
만약 정적 바인딩이라면
이 상황에서 JOB의 cut이 실행 .
다형성을 사용할 수 없다 !!
JoB job1 = new 의사();
job1.cut();
때문에 OOP에서 동적 바인딩을 사용 !!
바인딩 끗 !(캡슐화는 나중에)
OOP 마무리
각각의 독립된 단위(Object)들은 서로 메시지를 주고 받으며 데이터를 처리함
소프트웨어 공학의 관점에서 볼 때 S/W의 질을 향상하기 위해 강한 응집력과 약한
결합력을 지향한다.
OOP의 경우 방금 설명한 특징들을 이용하여
응집력을 강화, 클래스간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다.
ObjectObject
Message
이 문서는 나눔글꼴로 작성되었습니다.
참고 :
뇌를 자극하는 자바
http://secretroute.tistory.com/entry/140819 ( 바인딩 )
+ 옆에 있는 선배
Ad

Recommended

객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
Seung-June Lee
[강의] OOP 개요
[강의] OOP 개요
Nohyun Kee
Hello, C# : OOP
Hello, C# : OOP
Ye Chan Lee
Java 다형성
Java 다형성
JaeYeoul Ahn
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
용호 최
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념
중선 곽
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
중선 곽
Communism OOP
Communism OOP
RangHo Lee
자바로 배우는 자료구조
자바로 배우는 자료구조
중선 곽
Java extends
Java extends
Hyosang Hong
Light Tutorial Python
Light Tutorial Python
Kwangyoun Jung
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
중선 곽
메이크챗봇 자연어기초
메이크챗봇 자연어기초
김용범 | 무영인터내쇼날
[Dev rookie]designpattern
[Dev rookie]designpattern
대영 노
튜터링자료 1.adt
튜터링자료 1.adt
익범 전
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
재정 이
Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준
HoJun Sung
자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스
Lee Dong Wook
파이썬과 자연어 1 | Word Cloud
파이썬과 자연어 1 | Word Cloud
김용범 | 무영인터내쇼날
자연어1 | 1차강의
자연어1 | 1차강의
김용범 | 무영인터내쇼날
파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조
김용범 | 무영인터내쇼날
파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분
김용범 | 무영인터내쇼날
객체지향프로그래밍 특강
객체지향프로그래밍 특강
uEngine Solutions
디자이너의 코드 읽기 2. 객체지향 이야기(上)
디자이너의 코드 읽기 2. 객체지향 이야기(上)
Sun Kim
Vision insight july
Vision insight july
Krivers12
Certificación ángel azul
Vanessa G. Barragán
Eco by hemmawan
Eco by hemmawan
Eim Jung
Nutrition
Nutrition
alcain28
Parade orthopedy rbw 27 juni 2015
Parade orthopedy rbw 27 juni 2015
Johan Marison

More Related Content

What's hot (15)

자바로 배우는 자료구조
자바로 배우는 자료구조
중선 곽
Java extends
Java extends
Hyosang Hong
Light Tutorial Python
Light Tutorial Python
Kwangyoun Jung
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
중선 곽
메이크챗봇 자연어기초
메이크챗봇 자연어기초
김용범 | 무영인터내쇼날
[Dev rookie]designpattern
[Dev rookie]designpattern
대영 노
튜터링자료 1.adt
튜터링자료 1.adt
익범 전
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
재정 이
Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준
HoJun Sung
자바스크립트 프로토타입 및 클래스
자바스크립트 프로토타입 및 클래스
Lee Dong Wook
파이썬과 자연어 1 | Word Cloud
파이썬과 자연어 1 | Word Cloud
김용범 | 무영인터내쇼날
자연어1 | 1차강의
자연어1 | 1차강의
김용범 | 무영인터내쇼날
파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조
김용범 | 무영인터내쇼날
파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분
김용범 | 무영인터내쇼날

Viewers also liked (12)

객체지향프로그래밍 특강
객체지향프로그래밍 특강
uEngine Solutions
디자이너의 코드 읽기 2. 객체지향 이야기(上)
디자이너의 코드 읽기 2. 객체지향 이야기(上)
Sun Kim
Vision insight july
Vision insight july
Krivers12
Certificación ángel azul
Vanessa G. Barragán
Eco by hemmawan
Eco by hemmawan
Eim Jung
Nutrition
Nutrition
alcain28
Parade orthopedy rbw 27 juni 2015
Parade orthopedy rbw 27 juni 2015
Johan Marison
JM-Portfolio-2015
JM-Portfolio-2015
John Mangold
Jean-Paul Gibson: Solid Mechanics Design Project of a Bracket Using ANSYS
Jean-Paul Gibson: Solid Mechanics Design Project of a Bracket Using ANSYS
Jean-Paul Gibson
Eticaprofesional
eduadojose
Ice c-21 to 41 fundamentals
Ice c-21 to 41 fundamentals
jahanzaibkhawja
객체지향프로그래밍 특강
객체지향프로그래밍 특강
uEngine Solutions
디자이너의 코드 읽기 2. 객체지향 이야기(上)
디자이너의 코드 읽기 2. 객체지향 이야기(上)
Sun Kim
Vision insight july
Vision insight july
Krivers12
Certificación ángel azul
Vanessa G. Barragán
Parade orthopedy rbw 27 juni 2015
Parade orthopedy rbw 27 juni 2015
Johan Marison
Jean-Paul Gibson: Solid Mechanics Design Project of a Bracket Using ANSYS
Jean-Paul Gibson: Solid Mechanics Design Project of a Bracket Using ANSYS
Jean-Paul Gibson
Eticaprofesional
eduadojose
Ad

Similar to Oop (객체지향이란)? (20)

병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
codenavy
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
Dong Chan Shin
Sql 중심 코드 탈피 발표자료
Sql 중심 코드 탈피 발표자료
ssuser776e2d
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계
Eb Styles
OOP - Object Oriendted Programing
OOP - Object Oriendted Programing
ChangHyeon Bae
Sql 중심 코드 탈피
Sql 중심 코드 탈피
ssuser776e2d
3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx
ssuser642b19
Holub on-patterns-2-1
Holub on-patterns-2-1
정환 임
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1
정환 임
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
NAVER D2
Log4j
Log4j
flashscope
Architecture patterns with python (1)
Architecture patterns with python (1)
동환 김
Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초
JaewonLee153
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
Yeon Soo Kim
Log4j 사용법
Log4j 사용법
YoungSu Son
3주차 language
3주차 language
준혁 이
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
Jiho Lee
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
codenavy
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
Effective c++ chapter5 6_ 131039 신동찬
Effective c++ chapter5 6_ 131039 신동찬
Dong Chan Shin
Sql 중심 코드 탈피 발표자료
Sql 중심 코드 탈피 발표자료
ssuser776e2d
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계
Eb Styles
OOP - Object Oriendted Programing
OOP - Object Oriendted Programing
ChangHyeon Bae
Sql 중심 코드 탈피
Sql 중심 코드 탈피
ssuser776e2d
3팀_객체지향 프로그래밍.pptx
3팀_객체지향 프로그래밍.pptx
ssuser642b19
Holub on-patterns-2-1
Holub on-patterns-2-1
정환 임
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1
정환 임
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
NAVER D2
Architecture patterns with python (1)
Architecture patterns with python (1)
동환 김
Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초
JaewonLee153
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
Yeon Soo Kim
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
Jiho Lee
Ad

Oop (객체지향이란)?

  • 1. 객체지향(OOP) 2015-07-14 / 장철운 이 문서는 나눔글꼴로 작성되었습니다. OOP언어를 사용하면서, 정작 oop가 뭔지 몰랐다 …
  • 2. OOP 컴퓨터프로그램을 명령어의 목록으로 보는 시각에서 벗어나, 여러 개의 독립된 단위 (Object)들의 모임으로 파악하고자 하는 것 ! ObjectObject Message 각각의 독립된 단위(Object)들은 서로 메시지를 주고 받으며 데이터를 처리함 EX) Name Jang = New Name(); // 객체 생성 Jang.study(); // < 명령어의 목록이 아닌 Jang 이라는 객체를 통해 프로그래밍 !
  • 3. Why Oop의 특징을 통해 유연성과 확장성을 보장할 수 있기 때문! 왜 oop언어를 사용하지 ? 우리가 OOP를 사용하는 중요한 이유 중 하나는 기존의 시스템에 새로운 기능을 추가하거 나 이미 존재하는 기능을 확장 하는 것이 다른 프로그램 언어보다 용이 하기 때문이다.
  • 4. 특징 Oop의 특징을 통해 유연성과 확장성을 보장할 수 있기 때문! OOP의 특징으로는 크게 4가지가 있다. 1. 동적 바인딩 2. 상속 3. 다형성 4. 캡슐화 오오 ! 얘는 들어봄 !!
  • 5. 특징 –바인딩 얘 오늘 처음 들어봄 .. 뭐야 … 바인딩 ? 프로그래밍 용어 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것. Ex) 변수, 배열, 라벨, 절차 등의 명칭(식별자)이 그 대상인 메모리 주소, 데이터형 또는 실제 값으로 배정되는 것이 이에 해당한다. = 함수를 호출하는 부분에 함수가 위치한 메모리 번지로 연결시켜 주는 것이 바인딩(Binding)!!
  • 6. 특징 –바인딩 바인딩은 2가지 종류로 나뉜다. 정적 바인딩 컴파일링 또는 링크시 확정되는 바인딩을 뜻함 동적 바인딩 프로그램의 실행되는 과정에서 바인딩되는 것 보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩 보충 : 컴파일 시간에 완료되어 변화하지 않는 바인딩 설명이 좀 부족한데 …?
  • 7. 특징 – 정적 바인딩 정적 바인딩 컴파일링 또는 링크시 확정되는 바인딩을 뜻함 보충 : 컴파일 시간에 완료되어 변화하지 않는 바인딩- 런타임 중 주소변경x 정적 타입언어의 장점은 안정성과 효율성이다. 컴파일시에 타입의 많은 정보를 결정(Binding)하기 때문에 빠르고, 안정성을 기여 할 수 있다. Ex) private, final, static 함수 <- static의 특징을 보면 이해 가능 !
  • 8. 특징 – 동적 바인딩 동적 바인딩은 일반적으로 정적 바인딩에 비해 속도가 느리고 주소를 저장하기 위한 테이블을 사용하기에 공간낭비가 생긴다. 동적 바인딩 프로그램의 실행되는 과정(런타임)에서 바인딩되는 것 보충 : 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩 근데 왜 oop는 얘를 쓰지 ? 다형성 때문 !!!
  • 9. 특징 – 상속 다형성전에 상속에 대해 … 사전적 의미 사람의 사망으로 인한 재산상 법률관계의 포괄적 승계. OOP에서의 상속이란 !! 상위클래스(부모)가 그의 속성(함수 등)을 하위클래스(자식)에게 넘겨주는 것을 의미한다. 여기까진 이해 OK ?
  • 10. 특징 – 다형성 단, 현실에서도 그렇듯이 부모가 준 속성을 자식이 그대로 받지 않을 수 있다. 엄마 미안 .. Cut() 자르다 ! 의사 미용사 수술 할 때, 매스를 통한 cut 머리를 자를때의 Cut 부모(JOB) 자식
  • 11. 특징 – 다형성 위와 같이 오버라이딩을 통해 같은 명령에 대해 다른 반응을 보이는 특징을 다형성이라고 한다. 이러한 다형성이 가능한 원인이 동적 바인딩때문! JoB job1 = new 의사(); JoB job2 = new 미용사(); job1.cut(); // >> 의사의 cut이 실행 job2.cut(); // >> 미용사의 cut이 실행
  • 12. 특징 – 다시 동적 바인딩 만약 정적 바인딩이라면 이 상황에서 JOB의 cut이 실행 . 다형성을 사용할 수 없다 !! JoB job1 = new 의사(); job1.cut(); 때문에 OOP에서 동적 바인딩을 사용 !! 바인딩 끗 !(캡슐화는 나중에)
  • 13. OOP 마무리 각각의 독립된 단위(Object)들은 서로 메시지를 주고 받으며 데이터를 처리함 소프트웨어 공학의 관점에서 볼 때 S/W의 질을 향상하기 위해 강한 응집력과 약한 결합력을 지향한다. OOP의 경우 방금 설명한 특징들을 이용하여 응집력을 강화, 클래스간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다. ObjectObject Message
  • 14. 이 문서는 나눔글꼴로 작성되었습니다. 참고 : 뇌를 자극하는 자바 http://secretroute.tistory.com/entry/140819 ( 바인딩 ) + 옆에 있는 선배