공부 기록
[WEEK 1] Object-Oriented Programming 본문
■ 객체 지향 프로그래밍 : 어떤 속성과 동작을 가진 객체를 만들고 그 객체들을 조립하여 하나의 프로그램을 만드는 방법
▶ 클래스, 인스턴스
- 객체 : 실체화가 가능한 모든 것이다.
- 클래스 : 객체를 정의해 놓은 틀이다. 속성과 메소드들로 구성되어 있다.
- 인스턴스 : 클래스를 바탕으로 메모리에 할당된 실체이다.
ex. class : 붕어빵틀, object : 붕어빵, instance : 각각의 붕어빵
▶ 특징
1. 추상화
- 객체의 공통의 속성이나 기능을 추출하여 정의하는 것이다.
- 클래스를 정의하는 것이 추상화라고 할 수 있다.
2. 캡슐화
- 특정 목적을 위해 데이터와 메소드를 묶어서 추상화 하는 것이다. 중요한 데이터를 보존, 보호하는 것이 목적이다.
- 외부에서 알 필요가 없거나 숨겨야 하는 부분을 감춤으로써 대상을 캡슐 형태로 단순화 한다.
3. 상속
- 상위 클래스의 속성과 메소드를 물려받은 하위 클래스를 생성하는 것이다.
- 속성과 메소드를 추가 또는 변경할 수 있다.
4. 다형성
- 하나의 개체가 여러 의미를 가질 수 있는 성질을 말한다.
▷ 오버로딩(Overloading) : 기호 또는 식별자가 같은 개체가 다른 성질을 갖도록 재정의하는 것을 말한다. 대표적으로 연산자 오버로딩과 함수 오버로딩이 있다.
- 연산자 오버로딩 : 정해진 목적으로 사용하는 연산자를 특수한 경우에 다른 목적으로 사용하기 위해 연산자의 역할을 재정의하는 것
- 함수 오버로딩 : 하는 역할은 같은데 반환형이나 매개변수를 다르게 설정할 필요가 있을 때 같은 식별자에 반환형과 매개변수를 다르게 설정하여 함수를 재정의하는 것
▷ 오버라이딩(Overriding) : 클래스 상속 관계에서 상위 클래스의 메소드를 하위 클래스에서 재정의하는 것을 말한다.
▶ 장점
- 코드 재사용이 용이하다.
- 유지 보수가 쉽다.
- 생산성이 향상된다.
▶ 단점
- 처리 속도가 상대적으로 느리다.
- 객체가 많으면 용량이 커질 수 있다.
- 설계 시 많은 노력과 시간이 필요하다.
▶ OOP 5가지 설계 원칙(SOLID)
S | SRP(Single Responsibility Principle) : 단일 책임 원칙 |
한 클래스는 하나의 책임만 가져야 한다. |
O | OCP(Open Close Prinicple) : 개방 폐쇄 원칙 |
소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다. |
L | LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 |
프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. (하위 클래스의 인스턴스는 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.) |
I | ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 |
특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다. |
D | DIP(Dependency Inversion Principle) : 의존 역전 원칙 |
프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다 |
▶ decorator
- 함수의 기능을 확장하고 싶을 때 사용한다.
- 함수를 인자로 받아 기능을 추가한 뒤 다시 반환해주는 형식으로 구현한다.
- @데코레이터 함수명
'BOOST CAMP - AI Tech' 카테고리의 다른 글
[WEEK 1] AI Math - 행렬 (0) | 2022.09.25 |
---|---|
[WEEK 1] AI Math - 벡터 (0) | 2022.09.25 |
[WEEK 1] Pythonic code (2) | 2022.09.23 |
[WEEK 1] Python - collections 패키지 (0) | 2022.09.22 |
[WEEK 1] 자료구조 (2) | 2022.09.21 |