객체 지향 프로그래밍(Object-Oriented Programming)
객체 지향 프로그래밍이란?
OOP (Object Oriented Programming) 이라고도 부르며, 프로그램을 여러 개의 독립된 객체들과 그 객체들 간의 상호작용을 이용한 프로그래밍 접근법이다.
•
객체지향 프로그램을 만들기 위해서 고려해야할 것들
◦
프로그램에 어떤 객체들이 필요한지 정한다
◦
객체들의 속성과 행동들을 정한다.
◦
객체들이 서로 어떻게 소통해야할지 정한다.
사용되는 대표적인 언어: 자바, c++, python, swift 등등
객체 지향 프로그래밍의 핵심 개념
추상화 (Abstraction)
•
이름 잘 짓고, 문서화 잘하기
•
구조를 상세히 몰라도, 클래스나 메서드, 변수들의 이름만으로 파악할 수 있어야 한다.
캡슐화 (Encapsulation)
•
외부로부터의 직접적인 엑세스를 차단한다 (ex. getter/setter, private 제어자)
•
속성과 이 속성을 사용하는 행동을 하나로 묶어야 한다 (객체를 사용할 땐 메서드를 사용)
상속 (Inheritance)
•
중복되는 코드는 상속받는다 (중복되는 코드가 있다면, 부모 클래스를 만들어 override 함)
다형성 (Polymophism)
•
오버로딩 (overloading) - 같은 이름의 함수를 매개변수의 타입, 갯수를 다르게 하여 재정의 한 것
•
오버라이딩 (overriding) - 부모 클래스에서 정의한 메서드와 같은 이름, 같은 매개변수를 갖는 메서드를 자식 클래스에서 재정의한 것
객체 지향 프로그래밍의 장점과 단점
장점
•
코드의 재사용성이 용이
•
유지보수 및 업그레이드가 쉽다
•
대형 프로젝트에 효과적
•
직관적인 코드 분석을 가능하게 한다
단점
•
처리 속도가 느리다
•
객체가 많아질수록 용량이 커진다
•
설계 시 시간과 노력이 많이 필요