-
[n513] 파이썬 with OOPAI 부트캠프 2022. 1. 20. 10:50
OOP (Object-Oriented Programming)
- 클래스와 인스턴스, 함수, 변수라는 object로 변화시켜서 프로그램을 구성한다.
- 프로그래밍을 할 때 최소비용, 최대 효율을 위해 만들어졌다.
- OOP의 기본 전제는 기능(함수, 변수) 재사용을 위한 프로그래밍 이다.
- 즉, 속성과 기능을 Object라는 최소 단위로 분리하는 개념이다.
OOP의 필요성
- 컴퓨터 하드웨어 성능이 증가하고, 사용하는 데이터양이 커지고, 데이터 기반 의사 결정을 하는 경우가 많아지면서 OOP 필요성이 늘어났다.
def carAttribute(): speed = 50 color = 'black' model = 'CarModel' return speed,color,model print("Car Attribute: ", carAttribute())
class Animal: def __init__(self, speed, color): self.speed = speed self.color = color def run(self): self.speed = 70 class Tiger: def __init__(self, speed, color, model): self.speed = speed self.color = color self.model = model def run(self): self.speed = 50 hippo = Animal(0, "purple", "momHippo") print("--------hippo Object Create Complete--------") print("Animal Speed: ", hippo.speed) print("Animal Color: ", hippo.color) print("Animal Model: ", hippo.model) print("hippo color: ", hippo.color)
OOP 구성
캡슐화
내부 속성(변수)과 함수를 하나로 묶어서 클래스로 선언하는 일반적인 개념
상속과 포함(Inheritance & Composition)
상속 : 상위 클래스의 모든 기능(함수, 변수)을 재사용할 수 있다. (흰색 화살표)
포함 : 다른 클래스의 일부 기능(함수)만을 재사용한다. (검은색 화살표)# 상속코드 # 클래스 선언 class Person: def __init__(self, name): self.name = name class Student(Person): # Person 클래스 상속받음(name 변수를 파라미터로 재사용) def study(self): print (self.name + " studies hard") class Employee(Person): # Person 클래스 상속받음(name 변수를 파라미터로 재사용) def work(self): print (self.name + " works hard") # object 생성 s = Student("Dave") e = Employee("David") # object 실행 s.study() e.work()
# 포함코드 # 클래스 선언 class Bill(): def __init__(self, description): self.description = description class Tail(): def __init__(self, length): self.length = length class Duck(): def __init__(self, bill, tail): self.bill = bill self.tail = tail def about(self): print( f"This duck has a {self.bill.description} and a {self.tail.length}.") # object 생성 duck = Duck(Bill('bill object'), Tail('tail object')) # object 실행 duck.about()
추상화
- 기본개념 : 추상화(abstraction)는 복잡한 내용에서 핵심 개념을 요약한 것으로 실제로는 아무 기능도 실행하지 않는다.
- 선언된 추상클래스를 실제로는 아무런 기능도 하지 않고, 상속받은 다른 클래스의 메소드에서 확인 가능 하다.
- 추상클래스를 사용하는 이유
- 클래스나 함수가 복잡한 경우, 추상화를 한다. 즉, 핵심 기능을 요약해 둔다.
- 유지 보수를 할 때, 하위 클래스 여러개가 아닌 추상 클래스 하나만 수정하면 되므로 간단하다.
다형성
- 다형성이란? 구현되는 하위 클래스에 따라 클래스를 다르게 처리하는 기능이다.
- OOP에서 다형성은 계층 구조의 상속 관계에서 기능을 상속 받되, 다른 기능을 추가할 수 있다.
- 프로그램 작성 코드량을 줄여주므로 가독성이 좋아진다.
클래스의 인스턴스화
- 클래스를 생성한 뒤, 사용하기 위해서는 인스턴스가 필요하다.
'AI 부트캠프' 카테고리의 다른 글
[n521] Data Structure (0) 2022.01.25 [n514] 필수적인 자료 구조 (0) 2022.01.21 [n512] 파이썬을 활용한 문제 해결 (0) 2022.01.19 [n511] Python Programming (0) 2022.01.18 [n435] 이미지 처리 요약 (0) 2022.01.12