관리 메뉴

공부 기록

[WEEK 1] Object-Oriented Programming 본문

BOOST CAMP - AI Tech

[WEEK 1] Object-Oriented Programming

_JAEJAE_ 2022. 9. 23. 13:42

■ 객체 지향 프로그래밍 : 어떤 속성과 동작을 가진 객체를 만들고 그 객체들을 조립하여 하나의 프로그램을 만드는 방법

 

▶ 클래스, 인스턴스

- 객체 : 실체화가 가능한 모든 것이다.

- 클래스 : 객체를 정의해 놓은 틀이다. 속성과 메소드들로 구성되어 있다. 

- 인스턴스 : 클래스를 바탕으로 메모리에 할당된 실체이다. 

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
Comments