객체지향 프로그래밍이란?
프로그래밍 패러다임 중 하나로, 필요한 데이터를 추상화시켜 객체를 만들고 그 객체 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방식
객체지향의 장단점
장점
- 코드 재사용 용이
- 남이 만든 클래스를 가져와서 쉽게 사용할 수 있고 상속을 통해 확장 가능
- 유지 보수가 쉬움
- 수정해야 할 부분이 클래스 내부에 존재하기 때문에 절차지향에 비해 수정하기 쉬움
- 대규모 작업에 유리
- 클래스 단위로 모듈화 시켜 여러 사람이 참여하는 대규모 프로젝트 등에서 업무 분담이 용이
단점
- 처리속도가 상대적으로 느림
- 객체가 많으면 용량이 커질 수 있음
- 설계 시 많은 시간과 노력 필요
Keywords
1. 객체, 클래스, 인스턴스
- 클래스
- 어떤 문제를 해결하기 위한 데이터를 추상화시킨 것
- 집단에 속하는 속성과 행동을 변수와 메소드로 정의한다.
- 객체를 만들기 위한 메타정보라고 할 수 있다 (설계도)
- 객체
- 클래스 타입으로 선언됐을때 객체라고 부름 (클래스의 인스턴스)
- 클래스에 선언된 모양 그대로 생성된 실체
- 모든 인스턴스를 대표하는 포괄적 의미
- 인스턴스
- 실제 메모리에 구현된 구체적인 실체
- 객체를 소프트웨어에 실체화한 것 —> 메모리에 할당
- 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 함
추상화 (자료의 추상화)
- 클래스를 설계하는 것 자체를 추상화시킨다고 할 수 있다
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것
캡슐화
- 공통된 기능과 특성의 모음을 클래스라는 캡슐에 분류해서 넣는 것
- 캡슐화의 목적
- 코드를 재수정 없이 재활용하는 것
- 접근 제어자를 통한 정보 은닉
- 외부에 노출하지 말아야할 정보를 제어 권한이 있는 객체만 접근가능하게 할 수 있음
상속
- 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고 기능의 일부분을 수정해야 할 떄 자식 클래스에서 해당 기능만 다시 정의하여 사용할 수 있게 하는 것
- 파이썬 상속
- 오버라이딩
- 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것
super()
를 사용하면 오버라이딩된 부모 클래스의 메소드를 사용할 수 있음 → 부모 클래스 호출 가능
- 오버로딩 불가
- 하나의 메소드에게 다형성을 부여하는 것(매개변수 수에 따라 다른 함수 호출 등)
- 파이썬은 다중상속 가능하다고는 함