프로그램을 실제 세상에 가깝게 모델링하는 기법이다. 프로그램을 객체들의 모임으로 구성하고, 객체들 간의 상호 작용을 통해 프로그램을 구현하는 프로그래밍 패러다임이다. 절차적 프로그래밍(예. C언어)에 비하여 생산성이 높다.
OOP는 객체, 클래스인스턴스, 상속과 다형성이라는 주요 특징을 가진다.
파이썬에서는 모든 것이 객체이다.
객체(Object)는 데이터와 그 데이터를 처리하는 메서드(함수)를 함께 묶어 놓은 것을 말한다. 예를 들어, 자동차 객체는 자동차의 속성(색상, 속도 등)과 동작(가속, 정지 등)을 포함한다.
클래스(Class)는 그런 객체를 생성하기 위한 템플릿 또는 청사진이다. 클래스는 속성과 메서드로 구성되어 있으며, 객체를 생성하기 위한 설계도 역할을 한다.
인스턴스(Instance)는 클래스를 기반으로 생성된 실제 객체라서 각각의 인스턴스가 클래스에서 정의된 속성과 메서드를 가진다.
캡슐화(Encapsulation)는 객체의 속성과 메서드를 하나로 묶고, 외부에서의 직접적인 접근을 제한하는 것을 말한다. 그래서 객체 내부의 상세 구현을 숨기고, 필요한 부분만 노출하여 외부에서 사용 가능하게 한다.
상속(Inheritance)는 기존 클래스에서 정의된 속성과 메서드를 다른 클래스에서 재사용하는 기능이다. 코드 재사용성을 높이고, 기존 클래스의 기능을 확장하여 새로운 클래스를 생성할 수 있다.
다형성(Polymorphism)은 같은 이름의 메서드가 다른 클래스에서 다르게 동작하도록 하는 기능이다. 코드의 일관성을 유지하면서 다양한 객체를 다룰 수 있어 코드의 유연성을 높인다.
https://wikidocs.net/85
https://www.youtube.com/watch?v=eMO3d5FtFTs
https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95
https://lifelong-education-dr-kim.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90