본문 바로가기
KNOU/요약정리

[python] 객체지향

by bottlesun 2023. 5. 16.
728x90

유사성

[추가적 기능]                          [추가적 기능]

[공통적 기능] - [공통적 기능] - [공통적 기능]

        A                                               B

객체지향의 개념

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

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

객체지향 패러다임의 특징

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

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

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

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

객체와 클래스

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

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

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

데이터필드 = 변수

연산(메소드) = 함수

클래스 정의

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

메소드(method)

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

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

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

self 매개변수

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

→ 메소드의 구현에 사용되지만 메소드 호출 시 사용X

→ 객체 자신을 참조하여 클래스 정의에 포함된 멤버에 접근 시 사용 (데이터 필드로 지칭)

초기자(initalizer)

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

→ 항상 init**** 로 명명

클래스 설계

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

→ 데이터 필드 이름 : 데이터 필드 타입

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

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

UML 클래스 다이어그램

출처 - 방통대 강의 내용 중

객체와 인스턴스

클래스 이름(초기자 파라미터) # 생성자 호출

→ 클래스의 생성자(constructor) 를 통해 클래스의 인스턴스 생성

→ 객체와 인스턴스는 동일 개념

→ 클래스의 생성자는 클래스의 이름과 동일

→ 클래스의 이름과 초기자의 매개변수를 사용하여 생성자를 호출

객체의 생성 과정

  1. 클래스에 해당 하는 객체 생성
  2. __ init __ () 호출 // 초기자

객체의 사용

객체의 데이터 필드 접근 및 메소드 호출

→ 객체 멤버 접근 연산자(.) 사용

객체 접근

→ 객체 참조 변수를 사용하여 객체를 생성

객체참조변수 = 클래스이름(초기화 파라미터) // 생성자를 통해 만들어진 객체

객체참조변수.데이터필드
객체참조변수.메소드(파라미터)

데이터 타입과 객체

str 메소드

 

메소드 설명
upper(), lower() 대/소 문자로 변경
title() 각 단어의 첫 글자를 대문자로 변경
strip(),rstrip(),lstrip() 양쪽/왼쪽/오른쪽 특정 문자 제거
replace() 문자열 특정 부분을 대체
split() 구분자로 분할하여 리스트로 반환

데이터 필드 감추기

데이터 은닉(data hiding)

→ 데이터 필드의 직접 변경을 방지하기 위해 사용자의 직접적 접근을 차단

→ public 과 다른 private 데이터 필드로 정의

private 데이터필드

→ 클래스 내부에서만 접근 가능

→ 앞 두 밑줄(__) 로 정의

self.__a
self.__b

접근자와 변경자

private 으로 정의된 데이터 필드는 객체 외부에서 접근 불가능

private 데이터 필드에 접근하는 메소드

  • 접근자(accessor) : 데이터 필드 반환
  • 변경자(mutator) : 데이터 필드 설정
728x90

'KNOU > 요약정리' 카테고리의 다른 글

[python] 파일  (0) 2023.05.16
[python] 모듈  (0) 2023.05.16
[python] 함수  (0) 2023.05.16
[python]구조적 프로그래밍 패러다임  (0) 2023.05.16
[python] 파이썬의 이해  (0) 2023.05.16

댓글