본문 바로가기
방통대/파이썬

[파이썬] 10-1 객체지향

by 꿈꾸는 몽나 2024. 4. 25.
728x90

객체지향

: 객체와 객체 사이의 상호작용으로 프로그램을 구성하는 프로그래밍 패러다임

: 프로그램을 유연하고 변경을 쉽게 만들어 대규모 소프트웨어 개발에 사용

 

객체지향 패러다임의 특징

-추상화 : 공통의 속성이나 기능을 도출

-캡슐화 : 데이터 구조와 데이터의 연산을 결합

-상속 : 상위 개념의 특징이 하위 개념에 전달

-다형성 : 유사 객체의 사용성을 그대로 유지

 

 

 

 

객체와 클래스

: 객체는 추상화와 캡슐화의 결과

: 실세계의 사물에 대한 상태(데이터)와 연산(메소드)을 표현한 단위

-> 멤버(데이터 필드, 메소드)는 클래스에 의해 결정

 

 

 

 

클래스 정의

-구문형식

class 클래스 이름:
    초기자 정의
    메소드 정의

 

-메소드

: 객체에 대한 행동(연산)을 정의

: 함수의 정의 및 사용 방법과 동일

 

-초기자

: 객체의 상태를 초기화하는 특수 메소드

: 항상 __int__으로 명명

 

 

 

 

메소드의 정의

-구문형식

class 클래스 이름:
    def 메소드 이름(self, 매개변수 리스트):
        코드 블럭

 

-self 매개변수

: 모든 메소드의 첫번째 매개변수

: 메소드의 구현에 사용되지만 메소드 호출 시 사용되지 않음

: 객체 자신을 참조하여 클래스 정의에 포함된 멤버에 접근 시 사용

 

 

 

원뿔 예제)

#self.r과 self.h의 스코프(시작)
class Cone :
    def __init__(self, radius = 20, height = 30):
        #변수 r과 h 앞에 self.를 붙이지 않는다면 범위가 한정됨.
        #변수 r와 h의 스코프(시작)
        self.r = radius
        self.h = height
        #변수 r와 h의 스코프(끝)
        
    def get_vol(self) :
        return 1/3 * 3.14 * self.r ** 2 * self.h
        
    def get_surf(self) :
        return 3.14 * self.r ** 2 + 3.14 * self.r * self.h
#self.r과 self.h의 스코프(끝)

 

 

 

 

클래스 설계

: UML 클래스 다이어그램 통해 데이터필드, 생성자, 메소드 표현 방법 표준화

-> 데이터 필드 이름 : 데이터 필드 타입

-> 클래스 이름(매개변수 이름 : 매개변수 타입)

-> 메소드 이름(매개변수 이름 : 매개변수 타입) : 반환값 타입

 

 

 

원뿔 클래스의 표현

: UML 클래스 다이어그램

 

 

 

 

BMI 계산 프로그램

: 이름, 나이, 몸무게 키를 사용하여 BMI 수치 및 상태를 반환하는 BMI 클래스를 정의

 

class BMI :
    def __init__(self, name, age, weight, height) :
        self.name = name:
        self.age = age
        self.weight = weight
        self.height = height
        
    def get_BMI(self) :
        return self.weight / (self.height / 100) ** 2
        
    def get_status(self) :
    #위에서 반환된 BMI값을 가지고 판정하는 부분
    
    #get_BMI에서 반환된 값을 부르는 방법
    # 1. 내부의 메소드를 직접 호출
        if self.get_BMI() >= 25 :
            return "비만"
        elif self.get_BMI() >= 23 and self.get_BMI < 25 :
            return "과체중"
        elif self.get_BMI() >= 18.5 and self.get_BMI < 23 :
            return "정상"
        else :
            return "저체중"
            
    # 2. 변수에 메소드 바환값을 저장해 놓고 해당 변수를 호출
        BMI = self.get_BMI()
        
        if BMI >= 25 :
            return "비만"
        elif BMI >= 23 and BMI < 25 :
            return "과체중"
        elif BMI >= 18.5 and BMI < 23 :
            return "정상"
        else :
            return "저체중"

 

728x90

'방통대 > 파이썬' 카테고리의 다른 글

[파이썬] 10-3 객체지향의 활용  (2) 2024.04.25
[파이썬] 10-2 클래스와 인스턴스  (0) 2024.04.25
[파이썬] 9강. 함수 연습 문제  (0) 2024.04.18
[파이썬] 9-2 함수의 확장  (2) 2024.04.18
[파이썬] 9-1 함수  (2) 2024.04.18