06. 객체지향 프로그래밍

조남웅·2025년 10월 11일

객체지향 프로그래밍

가. 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 현실 세계의 개체(Object)를 소프트웨어의 객체로 모델링하여, 데이터(속성)와 그 데이터를 처리하는 동작(메서드)을 하나의 단위로 묶어 프로그램을 구성하는 프로그래밍 패러다임이다.

나. 전체 프로그램을 구성하는 객체들을 식별하고, 각 객체가 가지는 데이터(속성)과 이를 처리하는 함수(메서드)를 하나의 독립된 단위로 정의한 뒤, 이 단위들을 서로 분리된 모듈로 설계하고 개발한다.

다. 일반적으로 객체 지향 언어에서는 먼저 객체를 어떻게 구성할지 클래스를 정의하고, 그 클래스로부터 객체(Instance)를 생성하여 사용한다.

Class 정의

가. 객체지향 언어에서 데이터인 객체를 어떻게 구성할지 정의한 설계도/템플릿을 클래스 라고 한다.
	1. Property/Attribute
		- ex) 학생(class) - 학번, 이름, 반, 학년, 학교
    	-고객 - 고객ID, 패스워드, 이름, email, 주소, 전화번호, point ...
    	-제품 - 제품번호, 이름, 제조사, 가격, 재고량
    
나. class 정의 - class는 Data type이고 instance는 value 이	
	1. class 클래스 이름: #선언부
    	# 클래스 구현
        # 메소드들의 정의
    2. 클래스 이름의 관례
   		- 파스칼 표기법 사용-각 단어의 첫글자는 대문자 나머진 소문자로 정의한다.
		- ex) Person, Student, HighSchoolStudent
class Car:
    pass

c1 = Car()
c2 = Car()
c3 = Car()
c4 = Car()
다. Method
	1. 객체의 state값을 처리하는 함수
    2. instance method라고 함.
    3. 개별 객체(instance)들은 동일한 instance 메소드를 이용해 자신의 instance 변수의 값들을 처리한다.
    

Property/Attribute(속성) - instance 변수

가. Property/attribute는 객체의 데이터, 객체를 구성하는 값들, 객체의 속성값들을 의미

1. 값을 저장하므로 변수로 정의(instance 변수)

나. 객체에 속성을 추가, 조회

다. 생성자(Initializer)
	1. 객체를 생성할 때 호출하는 특수메소드
    2. 구문 : __init__
    	- def __init__(self [, 매개변수들 선언]):
        	 self.속성명 = 값
class Person2:

    def __init__(self, name, age, address):
        #instance변수 초기화(값을 대입)
        self.name = name
        self.age = age
        self.address = address

p = Person2("홍길동", 30, "서울")
print(p.name, p.age, p.address)

상속(inheritance)

가. MRO - 다중상속 시 메소드 호출할 때 메소드를 찾는 순서
	1. 다중상속의 경우 먼저 선언한 클래스부터 찾는다.(왼 - 오)
    
종류 많음,,,

나. 구현?
class Parent1:
    ...

class Parent2:
    ...

class Sub(Parent1, Parent2):
    ...

method overriding(메소드 재정의)

가. super() 내장함수
	1. super().get_info()
    	- 이름, 나이는 Person(부모클래스)의 get_info() 호출
        
        

특수 메소드

가. 객체와 관련된 특정 상황이 발생하면 호출하도록 정의한 메소드
-   메소드 명이 더블 언더스코어로 시작하고 끝난다.
-   ex) `__init__(), __str__()`
profile
파이팅...

0개의 댓글