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를 사용할 때 좀 더 유연한 코드가 된다.