[TIL-35] Object Oriented Programming

우소라·2023년 4월 28일

Object Oriented Programming (OOP)
객체지향프로그래밍

클래스와 인스턴스 : 클래스는 객체를 생성하기 위한 청사진
클래스를 정의하는 속성과 동작 (attribute, method)

class Car:
    def __init__(self,model,color):
        self.model = model
        self.color = color
        self.speed=0
    def accelerate(self):
        self.speed += 10
    def brake(self):
        self.speed -= 10
    def get_speed(self):
        print(self.speed)

    
my_car = Car("소나타","빨간색")

print(my_car.color)

my_car.accelerate()
my_car.accelerate()
my_car.accelerate()
my_car.brake()

예시에서 알수 있는 것
-> 각 인스턴스에 따라서 속성값이 다르게 설정이 가능

  1. 상속
    1) 다형성
class Animal:
    def __init__(self,name, age):
        self.name = name
        self.age=age
    def speak(self):
        print("The animal speaks")
    
class Dog(Animal):
    def __init__(self,name,age,breed):
        super().__init__(name,age)
        self.breed = breed
    def speak(self):
        print("멍멍")

class Cat(Animal):
    def __init__(self,name,age,color):
        super().__init__(name,age)
        self.color = color
    def speak(self):
        print("야옹")

cute_dog = Dog("존","9","포메라니안")
cute_dog.speak()

cute_cat = Cat("나비","7",'white')
cute_cat.speak()
class Shape:
    def __init__(self,name):
        self.name = name
       
    def get_area(self):
        return self.area
    
class Circle(Shape):
    def __init__(self,name,radius):
        super().__init__(name)
        self.radius = radius
    def get_area(self):
        self.area = self.radius * self.radius * 3.14
        print(self.area)
      

class Rectangle(Shape):
    def __init__(self,name, length, width):
        super().__init__(name)
        self.length = length
        self.width = width
    def get_area(self):
        self.area = self.width * self.length
        print(self.area)
       
myCircle = Circle("원1",5)
myCircle.get_area()
myRectangle = Rectangle("사각형",3,4)
myRectangle.get_area()

0개의 댓글