- 객체지향 프로그래밍
- 클래스, 객체(인스턴스)
- 생성자 constructor : init(self)
- 클래스 변수 vs 인스턴스 변수
- str 메서드
- 클래스 변수 : 모든 인스턴스가 공유하는 변수 / 클래스.dict에 저장 : 클래스 당 1개만 존재
- 인스턴스 변수 : 각 객체마다 독립적으로 가지는 변수 / init안에 저장 : self에 연결
1. 객체지향 프로그래밍
- 데이터를 어떻게 구조화하는지 정의하고 해당 데이터를 수정할 수 있는 함수를 제공하는 프로그래밍 방식
객체지향의 주요 특징
-
캡슐화(Encapsulation) : 환자의 개인정보와 의료기록을 하나로 묶어 관리하고, 권한이 있는 사람만 접근할 수 있도록 보호할 수 있음
-
상속 (Inheritance): 일반 직원 → 의사, 간호사로 확장하여 공통 특성은 재사용하고 고유 특성만 추가
-
다형성 (Polymorphism) : 환자마다 다른 치료법이지만 '치료하기'라는 같은 인터페이스 사용
-
추상화 (Abstraction) : 복잡한 의료 과정을 핵심 기능만 추출하여 단순하게 표현
절차지향 vs 객체지향
- 절차지향 : 문제를 순차적인 함수들로 해결하는 방식
- 객체지향 : 관련된 데이터와 기능을 객체로 묶어서 해결하는 방식


2. 클래스, 객체(인스턴스)
- 클래스 = 아파트 설계도 / 객체(인스턴스) = 실제 지어진 집으로 비유할 수 있음.
- 클래스라는 틀을 만들고, 그 틀을 이용해서 여러 개의 객체를 만든다. 그리고 각 객체는 자신의 값을 갖데 됨.
- 클래스 = 공통 구조 정의 / 객체 = 실제 데이터 + 행동 --> 같은 클래스라도 객체마다 값이 다름.
클래스 작성 규칙
- 클래스명은 PascalCase 사용 (각 단어의 첫 글자 대문자) -> '_'사용하지 않고 대문자로 구분
- 클래스 안의 모든 인스턴스 메서드는 첫 번째 인자가
self
변수
- 클래스 변수는 모든 인스턴스가 공유하는 변수
- 인스턴스 변수는 각 객체마다 독립적으로 가지는 변수
- 태어날 때 자동으로 생기는 기본 설정이라고 생각하면 됨. 즉 직접호출하지 않아도 자동적으로 함수가 호출되서 나옴.

3. 생성자 constructor : init(self)
- 객체를 생성하는 자
- 객체가 만들어질 때 자동으로 호출함.
- 객체가 만들어질 때 해야 할 일들을 기술
- 객체 안에 있는 변수(인스턴스 변수)를 초기화할 때 사용
요리로 비유
- 클래스 = 요리 레시피
- 객체 = 완성된 음식
- 인스턴트 변수 = 재료
- 생성자(init) 재료 넣기
self 키워드
- self는 현재 객체 자신을 가리키는 대명사 역할
- 인스턴스의 속성과 메서드에 접근할 때 사용
- 클래스 안의 모든 인스턴스 메소드는 자동으로 첫 번째 인자를 self로 받음




문제1
- student 클래스를 만들고
- 생성자를 이용하여 이름, 국어, 영어, 수학 만들기
- 출력하는 메서드(prt)를 이용하여 이름, 국어, 영어, 수학, 총점, 평균을 출력하는 메서드 만들기

4. 클래스 변수 vs 인스턴스 변수





5.str 메서드
-
str는 객체를 사람이 읽기 쉽게 보여주기 위한 함수
-
장점: 디버깅이 쉬워짐, 출력 코드가 깔끔해짐, 객체를 “데이터처럼” 쓸 수 있음
-
str는 자동으로 호출됨 --> 출력용이라 데이터 자체가 바뀌는 건 아님
-
str 메서드는 객체를 문자열로 표현하는 방법을 정의하는 특별한 메서드
-
print() 함수로 객체를 출력하거나 str() 함수를 사용할 때 자동으로 호출됨

오늘은 함수랑 객체지항을 나눠서 공부한 날이라 6일차 글을 두 번 게시했다!
함수를 처음 공부할 때는 함수 부분이 제일 어려운 줄 알았는데...
객체지항을 접하니 함수는 괜찮은 편이었던것 같다.^^;;
그래도 자주 공부하다 보면 익숙해지는 날이 오겠지! 힘내자!