SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
2016_09_09 한정
객체지향 프로그래밍
Object-Oriented
Programming
객체지향 프로그래밍 이란?
먼저 객체지향의
사전적 의미를 살펴보면,
객체(客體) : 구체적인 대상
지향(指向) : 주되는 것으로 삼다
=> “객체지향”은 객체 위주로 하겠다 라는 의미!
즉
“객체지향 프로그래밍” 이란
객체를 위주로 프로그래밍을 하겠다는 의미
왜 객체지향 프로그래밍인가?
개발을 하는 우리의 환경
여러 사람이 함께 하는 협업
우리가 개발하는 것들
계속해서 변화를 줘야 하고
발전시켜 나가야 함
왜 객체지향 프로그래밍인가?
그렇다면
협업이 편리 해져야 함
그리고
초기개발비용 <<< 유지비용
유지비용이 적어져야 한다.
왜 객체지향 프로그래밍인가?
그렇다면
협업이 편리 해져야 함
그리고
초기개발비용 <<< 유지비용
유지비용이 적어져야 한다.
그럼 객체지향 프로그래밍이
이러한 비용을 감소 시켜주는지 봐야한다!
객체지향 프로그래밍 5가지 개념
Object(객체)
: Class 의 Instance이다.(클래스가 실체로 만들어 진 것)
: 구체화, 실체화 되어있음, 고유함
:상태 / 행위를 가진다.
Class와 Object
Class(클래스)
:동일한 행위와 속성을 갖는
객체들을 만들어 내는 틀
EX> 자동차
Audi
Mercedes
BMW
Class (공통특징:핸들, 브레이크가 있다. 움직인다..)
object (구체, 고유)
객체지향 프로그래밍 5가지 개념
Encapsulation(캡슐화)
: 객체에 관한 내용을 캡슐에 넣어
내부를 볼 수 없게 하는 것 (추상화)
Inheritance(상속)
: 객체간의 관계를 부여하여 사용함
가지고 있는 특성을 그대로 이어 받음
Polymorphism(다형성)
: 같은 이름의 멤버 함수가 서로 다르게
행동이 가능하다.
캡슐화를 통해
1>class안 변수들과 메서드를 묶어주고
2>은닉효과를 줘 사용시 그 메소드의 로직을
알 필요 없게 만들어 줍니다.
복잡한 코드를 공통부분부터 구현하여
구조를 한눈에 볼 수 있게 하고
코드의 재사용이 이루어지고
코드는 유연하고 간결해 지게 됩니다.
캡슐화 / 상속 / 다형성
오버로딩 / 오버라이딩을 통해
유연하고 효율적인 관리가 가능해 집니다.
다시한번 객체지향 프로그래밍 이란?
“캡슐화, 다형성, 상속 을 통해
코드 재사용을 증가시키고
유지보수를 감소시키는 장점을 얻기 위해서
객체들을 연결 시켜 프로그래밍 하는 것 입니다.”
라고 표현 할 수 있습니다.
출처 : (http://www.tonymarston.net/php-mysql/what-is-oop.html | what is OOP?)
객체지향 개발의 5대 원리 (SOLID)
SRP(Single Responsibility Principle / 단일 책임 원칙)
: 모든 클래스는 단 하나의 책임을 가져야 한다는 원칙입니다.
> 클래스는 자신의 이름이 나타내는 일만 하게 됩니다.
> 한 클래스의 변경에서 다른 클래스로의 변경이 되는
연쇄작용에서 자유로워 짐
BMW
번호
차번호
받아오기
핸들
운전하기
종류 주유법
BMW BMW SPEC
번호
핸들
종류
주유법
차번호
받아오기
운전하기
EX>
객체지향 개발의 5대 원리 (SOLID)
OCP(Open Close Principle / 개방 폐쇄의 원칙)
: 개체(클래스 / 모듈 / 함수)등에 는 확장에 대해 열려 있어야 하고
수정에 대해서는 닫혀 있어야 한다는 원칙입니다.
> 변경 될 수 있는것과 변하지 않을 것을 명확히 구분합니다.
> 객체지향 개념의 추상화와 다형성을 이용합니다.
CAR SPEC
번호
핸들
종류
주유법
CAR
차번호
받아오기
운전하기
EX>
BMW
BMW
SPEC
Audi
Audi
SPEC
객체지향 개발의 5대 원리 (SOLID)
LSP(The Liskov Substitution Principle / 리스코프 치환의 법칙)
: 자식클래스는 언제나 자신의 부모 클래스를 교체할 수 있다는 원칙이다.
두 함수의 역할이 크게 달라져서는 안된다.
정사각형
직사각형
객체지향 개발의 5대 원리 (SOLID)
ISP(Interface Segregation Principle / 인터페이스 분리의 법칙)
: 어떤 클래스가 다른 클래스에 종속이 될 때 가능한 최소의 인터페이스를
사용해야 한다는 법칙입니다.
새
날기
먹기
자기
비둘기
팽귄
날기
먹기
자기
날기?
새
날기
먹기
자기
비둘기
팽귄
날수 있는 새
위반
먹기
자기
먹기
자기 날기
객체지향 개발의 5대 원리 (SOLID)
DIP(Dependency Inversion Principle / 의존성역전의 원칙)
:하위레벨 모듈이 상위레벨 모듈을 변경하는
위계관계를 역전하는 것을 의미합니다.
상위 모듈이 하위 모듈에 의존 하고 있음 / 추상에 의존해야!
Calculator 클래스 > 추상화된 Adder > Adder의 구체적인 구현체
다른 Adder를 사용할 때 좀 더 유연한 코드가 된다.

Contenu connexe

Similaire à OOP_GETCHA_HANJUNG

Similaire à OOP_GETCHA_HANJUNG (20)

Object-Oriented Programming.pptx
 Object-Oriented Programming.pptx Object-Oriented Programming.pptx
Object-Oriented Programming.pptx
 
4팀_객체지향 프로그래밍.pptx
4팀_객체지향 프로그래밍.pptx4팀_객체지향 프로그래밍.pptx
4팀_객체지향 프로그래밍.pptx
 
객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptx객체지향 프로그래밍.pptx
객체지향 프로그래밍.pptx
 
Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초Apex Trigger를 위한 OOP 기초
Apex Trigger를 위한 OOP 기초
 
GloVe:Global vectors for word representation
GloVe:Global vectors for word representationGloVe:Global vectors for word representation
GloVe:Global vectors for word representation
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
객체지향이란? - <객체지향의 사실과 오해>를 읽고
객체지향이란? - <객체지향의 사실과 오해>를 읽고객체지향이란? - <객체지향의 사실과 오해>를 읽고
객체지향이란? - <객체지향의 사실과 오해>를 읽고
 
OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)OOP SOLID PRINCIPLE(KOREAN)
OOP SOLID PRINCIPLE(KOREAN)
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
 
2팀 객체지향 프로그래밍_Jinho.pptx
2팀 객체지향 프로그래밍_Jinho.pptx2팀 객체지향 프로그래밍_Jinho.pptx
2팀 객체지향 프로그래밍_Jinho.pptx
 
2팀 객체지향 프로그래밍.pptx
2팀 객체지향 프로그래밍.pptx2팀 객체지향 프로그래밍.pptx
2팀 객체지향 프로그래밍.pptx
 
Agile sw development 101
Agile sw development 101Agile sw development 101
Agile sw development 101
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
비즈니스모델 젠 (Business Model Zen) 소개
비즈니스모델 젠 (Business Model Zen) 소개비즈니스모델 젠 (Business Model Zen) 소개
비즈니스모델 젠 (Business Model Zen) 소개
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oop[부스트캠퍼세미나]김재원_presentation-oop
[부스트캠퍼세미나]김재원_presentation-oop
 

Dernier

Dernier (8)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 

OOP_GETCHA_HANJUNG

  • 2. 객체지향 프로그래밍 이란? 먼저 객체지향의 사전적 의미를 살펴보면, 객체(客體) : 구체적인 대상 지향(指向) : 주되는 것으로 삼다 => “객체지향”은 객체 위주로 하겠다 라는 의미! 즉 “객체지향 프로그래밍” 이란 객체를 위주로 프로그래밍을 하겠다는 의미
  • 3. 왜 객체지향 프로그래밍인가? 개발을 하는 우리의 환경 여러 사람이 함께 하는 협업 우리가 개발하는 것들 계속해서 변화를 줘야 하고 발전시켜 나가야 함
  • 4. 왜 객체지향 프로그래밍인가? 그렇다면 협업이 편리 해져야 함 그리고 초기개발비용 <<< 유지비용 유지비용이 적어져야 한다.
  • 5. 왜 객체지향 프로그래밍인가? 그렇다면 협업이 편리 해져야 함 그리고 초기개발비용 <<< 유지비용 유지비용이 적어져야 한다. 그럼 객체지향 프로그래밍이 이러한 비용을 감소 시켜주는지 봐야한다!
  • 6. 객체지향 프로그래밍 5가지 개념 Object(객체) : Class 의 Instance이다.(클래스가 실체로 만들어 진 것) : 구체화, 실체화 되어있음, 고유함 :상태 / 행위를 가진다. Class와 Object Class(클래스) :동일한 행위와 속성을 갖는 객체들을 만들어 내는 틀 EX> 자동차 Audi Mercedes BMW Class (공통특징:핸들, 브레이크가 있다. 움직인다..) object (구체, 고유)
  • 7. 객체지향 프로그래밍 5가지 개념 Encapsulation(캡슐화) : 객체에 관한 내용을 캡슐에 넣어 내부를 볼 수 없게 하는 것 (추상화) Inheritance(상속) : 객체간의 관계를 부여하여 사용함 가지고 있는 특성을 그대로 이어 받음 Polymorphism(다형성) : 같은 이름의 멤버 함수가 서로 다르게 행동이 가능하다. 캡슐화를 통해 1>class안 변수들과 메서드를 묶어주고 2>은닉효과를 줘 사용시 그 메소드의 로직을 알 필요 없게 만들어 줍니다. 복잡한 코드를 공통부분부터 구현하여 구조를 한눈에 볼 수 있게 하고 코드의 재사용이 이루어지고 코드는 유연하고 간결해 지게 됩니다. 캡슐화 / 상속 / 다형성 오버로딩 / 오버라이딩을 통해 유연하고 효율적인 관리가 가능해 집니다.
  • 8. 다시한번 객체지향 프로그래밍 이란? “캡슐화, 다형성, 상속 을 통해 코드 재사용을 증가시키고 유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결 시켜 프로그래밍 하는 것 입니다.” 라고 표현 할 수 있습니다. 출처 : (http://www.tonymarston.net/php-mysql/what-is-oop.html | what is OOP?)
  • 9. 객체지향 개발의 5대 원리 (SOLID) SRP(Single Responsibility Principle / 단일 책임 원칙) : 모든 클래스는 단 하나의 책임을 가져야 한다는 원칙입니다. > 클래스는 자신의 이름이 나타내는 일만 하게 됩니다. > 한 클래스의 변경에서 다른 클래스로의 변경이 되는 연쇄작용에서 자유로워 짐 BMW 번호 차번호 받아오기 핸들 운전하기 종류 주유법 BMW BMW SPEC 번호 핸들 종류 주유법 차번호 받아오기 운전하기 EX>
  • 10. 객체지향 개발의 5대 원리 (SOLID) OCP(Open Close Principle / 개방 폐쇄의 원칙) : 개체(클래스 / 모듈 / 함수)등에 는 확장에 대해 열려 있어야 하고 수정에 대해서는 닫혀 있어야 한다는 원칙입니다. > 변경 될 수 있는것과 변하지 않을 것을 명확히 구분합니다. > 객체지향 개념의 추상화와 다형성을 이용합니다. CAR SPEC 번호 핸들 종류 주유법 CAR 차번호 받아오기 운전하기 EX> BMW BMW SPEC Audi Audi SPEC
  • 11. 객체지향 개발의 5대 원리 (SOLID) LSP(The Liskov Substitution Principle / 리스코프 치환의 법칙) : 자식클래스는 언제나 자신의 부모 클래스를 교체할 수 있다는 원칙이다. 두 함수의 역할이 크게 달라져서는 안된다. 정사각형 직사각형
  • 12. 객체지향 개발의 5대 원리 (SOLID) ISP(Interface Segregation Principle / 인터페이스 분리의 법칙) : 어떤 클래스가 다른 클래스에 종속이 될 때 가능한 최소의 인터페이스를 사용해야 한다는 법칙입니다. 새 날기 먹기 자기 비둘기 팽귄 날기 먹기 자기 날기? 새 날기 먹기 자기 비둘기 팽귄 날수 있는 새 위반 먹기 자기 먹기 자기 날기
  • 13. 객체지향 개발의 5대 원리 (SOLID) DIP(Dependency Inversion Principle / 의존성역전의 원칙) :하위레벨 모듈이 상위레벨 모듈을 변경하는 위계관계를 역전하는 것을 의미합니다. 상위 모듈이 하위 모듈에 의존 하고 있음 / 추상에 의존해야! Calculator 클래스 > 추상화된 Adder > Adder의 구체적인 구현체 다른 Adder를 사용할 때 좀 더 유연한 코드가 된다.