220929 Python #13

김혜진·2022년 9월 29일
0

Python

목록 보기
12/24

Python #13

객체지향 프로그래밍

객체지향이란

  • 객체(Object) : 사물, 물건, 물체
  • 지향(Oriented) : 지향적인, 위주의
  • 어떤 사물을 지향한다.
  • 자동차를 프로그래밍한다. (자동차를 구현한다.)

절차지향 프로그래밍

  • 구조적 프로그래밍과 같은 의미이다.
  • 음료를 구매할 때의 절차, 집을 지을 때의 절차
  • 수정이 쉽지 않은 구조이다.

객체지향 프로그래밍

  • 기본 단위가 객체이다.
  • 객체를 쉽게 추가, 변경, 삭제할 수 있는 유연한 구조이다.
  • 기존의 객체를 확장하거나 재사용하여 새로운 객체를 만든다.
  • 객체를 업그레이드 할 수 있고, 기존 객체를 새로운 다른 객체로 변경할 수 있다.
  • 스마트폰이 대표적인 예이다. (객체지향이 아니면 스마트폰의 기능은 쉽게 추가, 삭제, 업그레이드가 어려웠을 것이다.)

추상화

  • 추상화의 의미
    추상(抽象, abstraction) : 대상에서 특징만을 뽑아낸 것
    진돗개, 삽살개, 치와와 등의 구체적인 개들이 각각의 객체라면 이에 대한 공통적인 데이터와 기능을 도출해낼 수 있는데, 이를 추상화라고 한다.

캡슐화

  • 클래스 = 데이터 + 메소드

데이터 숨기기

  • 캡슐화를 통해 연관된 데이터를 묶어준다.
  • 데이터를 외부로부터 노출되지 않도록 한다.
  • 하지만 캡슐에 쌓여있는 감기약이 몸 안에 퍼지지 않으면 의미가 없듯이, 데이터가 밖으로 나오지 못하면 소용이 없다.
  • 그렇다고 데이터를 외부에 공개하면 보안에 문제가 생긴다.
  • 특정 인터페이스를 통해서만 외부에 데이터를 공개할 수 있도록 한다.

클래스

  • 클래스는 사용자 정의 데이터형이다.
  • 연관된 데이터와 멤버함수를 묶어놓은 단위로 구성되어 있다.

클래스의 선언 형식

class 클래스 이름:
	#멤버변수 선언
    #메소드 정의
  • 클래스 선언 시 class 키워드를 사용하고 그 뒤에 클래스 이름을 붙여주면 된다.
  • 클래스 이름 끝에 콜론(;)을 반드시 붙여준다.
class Car:
  # 자동차의 멤버 변수
  color = ""
  speed = 0
  weight = 0

  # 자동차의 메소드
  def set_Speed(self, s_speed):
    self.speed = s_speed # this -> speed
  def get_Speed(self):
    return self.speed

  def set_Color(self, s_color):
    self.color = s_color
  def get_Color(self):
    return self.color

  def set_Weight(self, s_weight):
    self.weight = s_weight
  def get_Weight(self):
    return self.weight

객체

객체 생성하기

  • 자동차 클래스를 완성했다고 자동차 실체가 만들어진 것은 아니다.
  • 클래스와 같은 설계도를 바탕으로 자동차 만드는 작업을 하게 되는데, 이 때 만들어진 자동차를 객체라고 한다.
    mycar=Car()
class Car:
  # 자동차의 멤버 변수
  color = ""
  speed = 0
  weight = 0

  # 자동차의 메소드
  def set_Speed(self, s_speed):
    self.speed = s_speed # this -> speed
  def get_Speed(self):
    return self.speed

  def set_Color(self, s_color):
    self.color = s_color
  def get_Color(self):
    return self.color

  def set_Weight(self, s_weight):
    self.weight = s_weight
  def get_Weight(self):
    return self.weight

mycar1 = Car()
mycar2 = Car()
mycar3 = Car()

mycar1.set_Color("노랑")
print(mycar1.get_Color())

mycar1.set_Color("초록")
print(mycar1.get_Color())

mycar1.set_Color("파랑")
print(mycar1.get_Color())

출력결과
노랑
초록
파랑


상속성

객체지향언어 기반에서 상속의 개념과 구조

  • 클래스를 상속받아 새로운 클래스를 정의하는 형태
class 자식 클래스 이름(부모 클래스 이름) :
	# 이 부분에 자식클래스 코드 입력
class SUV(Car):
  color = ""
  speed = 0
  weight = 0

class Sedan(Car):
  color = ""
  speed = 0
  weight = 0
profile
알고 쓰자!

0개의 댓글