제수기 > Python > OOP

Eunbi Jo·2025년 1월 18일
0

제수기

목록 보기
71/90
post-thumbnail
제수기 - 제발 수업내용을 기억해라 / 단순수업정리 시리즈

oop

Object-Oriented Program 객체 지향 프로그래밍

  • 객체(object)를 중심으로 프로그램을 작성하는 패러다임
  • 변수(속성)-함수(메소드)를 클래스라는 단위로 작성하고, 이를 객체화(인스턴스 instance)하는 것.

객체지향 원칙

  1. 캡슐화
  • 속성/메소드(함수) 묶어서 선언하고
  • 속성의 직접적인 접근을 막고, 메소드를 통한 사용만 허용하는 것이 캡슐화의 의미.
  1. 상속
  • 부모클래스에 선언된 속성/메소드를 자식클래스에서 선언없이 사용하는 것.
  • 코드 재사용성이 좋다.
  1. 다형성
  • 상속에 기반한 기술. 여러 자식 클래스를 부모타입으로 제어하는 것을 의미한다.
  1. 추상화
  • 공통된, 보편적인 속성/메소드를 추출해 내는 것. 또는 이를 통해 제어하는 것.

class instance

attribute method

클래스 속성과 인스턴스 속성

  • 인스턴스 속성: 인스턴스마다 달라져야 할 값을 가진 속성 (person.name, person.age, person.address, ...)
  • 클래스 속성: 인스턴스 간에 공유되는 속성(person.nationality, ...)

클래스 메소드(@classmethod)

cls는 메모리에 적재된 class 객체에 대한 참조

encapsulation

account

  1. 캡슐화
  • 속성/메소드(함수) 묶어서 선언하고
  • 속성의 직접적인 접근을 막고, 메소드를 통한 사용만 허용하는 것이 캡슐화의 의미.
  • __private 변수를 선언해서 속성의 직접적인 접근을 막고, 제공된 메소드를 통한 사용만 허용.
  • 캡슐화 원칙을 잘 지켰다면, 주요한 데이터가 외부로 노출되지 않는 은닉화 효과까지 얻게 된다.

import account

캡슐화 적용 이후 입금 처리

캡슐화 적용 이후 출금 처리

getter, setter

  • 캡슐화를 진행하면, private 속성을 외부에서 직접 접근할 수 없게 된다.
  • private 속성을 외부에서 사용하기 위한 메소드로 getter/setter를 제공할 수 있다.

getter : 속성을 가져오기 위한 메소드 (읽기)

  • getter에는 매개변수가 없고, private 속성을 반환해야 한다.

setter : 속성을 설정하기 위한 메소드 (쓰기)

  • setter에는 새 값을 담을 매개변수가 선언돼야 한다.

class Acoount:
    def __init__(self, name, balance):
        self.__name = name
        self.__balance = balance

    def info(self):
        return f'{self.__name}님의 현재 잔액은 {self.__balance}원입니다.'

    def deposit(self, money):
        # 유효성 검사
        if money > 0:
            self.__balance += money
            print('입금이 정상적으로 처리되었습니다.')
            print(self.info())
        else:
            print('입금액이 유효하지 않습니다.')

    def withdraw(self, money):
        if money < 0:
            print('출금액이 유효하지 않습니다.')
        elif money > self.__balance:
            print('잔액이 부족합니다.')
        else:
            self.__balance -= money
            print(self.info())

0개의 댓글