ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [n513] 파이썬 with OOP
    AI 부트캠프 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

    댓글