AIFFEL FD #12 객체 지향 프로그래밍 OOP

이재준·2021년 7월 21일
0

AIFFEL Fundamental

목록 보기
13/25

✅ 핵심내용

  • 파이썬 클래스에 대한 이해
  • 클래스를 활용한 객체 지향 프로그래밍

❓ 객체 지향 프로그래밍

Everything in Python is an object, and almost everything has attributes and methods.

라는 말이 있듯이 파이썬에서는 모든 것이 객체(object)다.

파이썬에서 객체란, 변수에 할당될 수 있고 함수의 인자로 넘겨질 수 있는 것들을 말한다.

객체는 속성과 메소드를 포함한다.

  • 속성(attribute) : 상태(state)를 나타냄 -> 변수로 구현함
  • 메소드(method) : 동작(behavior)을 나타냄 -> 함수로 구현함

이러한 객체를 활용한 프로그래밍을 객체 지향 프로그래밍 (OOP: Object Oriented Programming) 이라고 한다.
즉, 프로그램은 독립된 객체들의 모임 이라는 시선으로 바라보는 것이다. 객체들간의 상호작용을 통해 프로그램이 실행된다.

  • 객체 지향 프로그래밍 장점
    • 코드를 재사용하기 쉬움
    • 업그레이드 및 디버깅 쉬움
    • 직관적인 코드 분석 가능

객체 지향 프로그래밍 특징

  • 다향성 (polumorphism)
    • 어떤 정의된 자리에 어떤 데이터를 연결하느냐에 따라서 실행 결과를 다양하게 만들어 낼 수 있음
    • 오버라이딩, 오버로딩
  • 캡슐화 (encapsulation)
    • 연관성 있는 변수, 함수들을 묶는 것. 외부에서 직접 접근하지 못하도록 보호할 수 있음
    • 외부의 접근을 제한 가능
  • 추상화 (abstraction)
    • 프로그램에서 어떤 객체들의 동작과 속성들 중, 공통 속성을 파악하며 불필요한 속성은 걸러내어 삭제하고, 필요한 속성만 깔끔하게 남겨두어 이용자가 객체를 더 쉽게 사용할 수 있음
  • 상속 (inheritance)
    • 자식클래스가 필요로 하는 부모클래스를 선택해서, 필요한 내용을 상속 가능
    • 반복 코드 중복을 줄일 수 있고, 유지보수가 편해짐

최초의 객체 지향 언어인 Small Talk 를 시작으로 ios, 안드로이드 개발, data분석, 딥러닝, 웹백엔드 등 다양한 분야에서 다양한 언어를 이용해 객체 지향 프로그램의 패러다임이 지배적인 패러다임으로 사용되고 있다.

파이썬에서 객체를 직접 설계하기 위해서는 class 문법을 이용한다.

class 에 관한 내용은 여기에 정리하였다.


🎲 class 를 활용한 N 면체 주사위

class 를 활용한 프로그래밍 중 간단한 예시로 n면체 주사위를 만들어보았다. 자세한 내용은 Github link 를 통해 볼 수 있다.

Github link ➡ FD13_N-Syroid_Dice_with_Class

profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈

0개의 댓글