티스토리 뷰

1. 객체지향

· 객체(object) ? :

    - 서로 연관된 부품과 기능들을 모아둔다.

    - 자동차 = 변수 (자동차 부품 : ex. 휠, 바퀴, 문, 범퍼, ...) + 함수 (자동차 기능 : ex. 전진, 후진, 브레이크, ...)

 

· 객체지향 프로그래밍(object-oriented programing) ? : 

    - 실제세계를 모델링하여 프로그램을 개발하는 개발 방법론

    - 프로그램 개발 규모가 커지면서 > 처음부터 모든 것을 만드는게 아니라 다른 사람이 만든 코드를 사용 공유 > 협업이 용이하게 됨

 

· 객체지향언어 : 

    - JAVA : 객체지향 프로그래밍 가능

    - python : 완전한 객체지향언어라고 할 수는 없지만, class를 활용하면 객체지향적인 기능을 어느정도 구현할 수 있음

# 🍪를 만드는데 필요한 변수, 함수를 각각 따로 선언할 경우
cookie_sugar = 10
cookie_flour = 70
cookie_milk = 10

def calories(sugar, flour, milk):
	return sugar*4 + flour*2 + milk*1
    
cookie_calories = calories(cookie_sugar, cookie_flour, cookie_milk)
print(cookie_calories)	# 190
# 🍪에 관련된 변수, 함수를 모아서 Cookie 클래스 생성
class Cookie :

    def __init__(self, sugar, flour, milk) :
        self.sugar = sugar
        self.flour = flour
        self.milk = milk

    def calories(self):
        return self.sugar*20 + self.flour*10 + self.milk*5


# 쿠키 레시피대로 생산 > plain_cookie 객체 생성 (Cookie클래스의 인스턴스)
plain_cookie = Cookie(10, 70, 10)
print(plain_cookie.calories())	# 950

# 쿠키 레시피로 다른 쿠키 찍어내기 가능 > extrasugar_cookie 객체 생성
extrasugar_cookie = Cookie(30, 70, 10)
print(extrasugar_cookie.calories()) # 1350

 

 

2. 클래스 Class

· 클래스(class) :

    - 하나의 객체(object)에 대한 설계도 > 여러개의 함수를 포함

    - 식별자 컨벤션 : 클래스 Pascalase, UpperCamelCase / 변수, 함수 snake_case

* 컨벤션 (convention) : 관례, 관습 (룰은 아니어서 어겨도 돌아는 가지만 보기에 좋지 않음)

 

· 클래스 사용법 :

    - 함수 : 함수선언(코드작성)                  >                     함수호출(코드실행)            

    - 클래스 : 선언(코드작성)  >  객체생성(메모리 사용) > 메서드실행(코드실행)

    - 자동차(ex) : 설계도 작성 >           제품생산           > 기능 이용

* 메서드 vs 함수 : 매서드 (클래스 안에서 선언되어서 묶여 있는 함수), 함수(클래스 밖에서 선언된 함수)

 

· 

    - class

    - self

    - 사용자 정의 데이터타입

    - special methods : ex. __init__( ), __add__( ) ...

    - 상속

    - super

    - getter-setter

    - mangling

    - 메서드의 종류들(인스턴스, 클래스, 스태틱)

 

 

계산기 설계

# dir() : 객체에 들어있는 변수를 출력해주는 함수

print(dir(calc1))
print([var for var in dir(calc1) if var[0]!='_']

 

special method 스페셜 메서드

· 객체를 생성할 때 실행되는 메서드 

· 변수의 쵝값을 설정할 때 주로 사용 > 불량 객체가 만들어질 확률을 줄여줌.

def __init__(self, balance=20000):
    self.balance = balance
    
# 생성자 메서드도 함수이기 때문에 balance=20000 처럼 디폴트 값을 설정할 수 있음.

 

 

사용자 정의 데이터 타입

· type(object) = Class()

    - 인스턴스(plain_cookie)는 클래스(Cookie)로 만들어진다.

    - 객체의 데이터 타입(type(plain_cookie))은 클래스(Cookie) 이다.

 

· 이미 정의된 데이터 타입 (클래스)

    - data = [1, 2, 3]

    - type(data)는 list

    - data객체가 만들어진 클래스는 list > list 클래스는 우리가 만들지 않았지만 이미 만들어져 있음

    - 클래스인데 List가 아니라 list인 이유? : python 이 아니라 c언어로 구현되어 있음

    - dir(list) 사용 가능 > 메서드 출력됨

 

 

3. 상속

· 다른 클래스의 변수(메서드)를 가져와서 사용하는 방법 > 반복 줄임

# iPhone1 : call
# iPhone2 : call, send_msg
# iPhone3 : call, send_msg, internet
# 각각의 클래스로
class iPhone1:
    def call(self):
        print('calling!')
        
class iPhone2:
    def call(self):
        print('calling!')
    def send_msg(self):
        print('send_msg!')

class iPhone3:
    def call(self):
        print('calling!')
    def send_msg(self):
        print('send_msg!')
    def internet(self):
        print('internet!')
# 상속 사용
class iPhone1:
    def call(self):
        print('calling!')

class iPhone2(iPhone1):
    def send_msg(self):
        print('send_msg!')

class iPhone3(iPhone2):
    def call(self):
        print('video calling!')
    def internet(self):
        print('internet!')
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함