[CS] 객체지향 기본 개념
객체지향 프로그래밍
단어 그대로 객체 위주의 프로그래밍. 프로그래밍 시 필요한 데이터를 추상화 시켜서 물체와 행위를 객체로 만들고 그 객체들끼리의 상호작용을 통해 로직을 구성하는 프로그래밍 방법
객체 지향 프로그래밍의 장/단점
장점 :
코드 재사용이 용이하다 / 유지보수가 쉽다 / 중복되는 코드의 양이 줄어든다 / 객체간의 독립성이 뚜렷하다 / 클래스 단위로 모듈화시켜 개발할수 있어 분담에 용이하다
단점 :
실행속도가 상대적으로 느림. 절차지향언어는 컴퓨터의 처리구조와 비슷해 상대적으로 빠름 / 객체가 많아질수록 용량이 커짐 / 설계시 객체나 클래스별로 설계할 뿐만 아니라 상속 등의 구조도 설계해야 하기에 시간이 많이 소요 됨
객체지향 프로그래밍의 4가지 특성
- 추상화
공통적인 기준이 있는 속성 또는 기준을 묶어서 이름을 붙이고 묶음으로 만드는 것 - 캡슐화
객체 내의 동작이 어떻게 구현되는지 감추는 것.
변화가 일어나도 다른 곳에 미치는 영향 범위가 줄어들고 예측이 수월하다.
(라이브러리를 통해 재활용 하는 경우 코드의 수정이 일어나면 사이드 이펙트가 일어나는 범위를 파악하기 어려운 문제가 있음)
은닉화를 통해 응집화를 높이고 결합도를 줄인다 (접근지정자를 private로 지정) - 상속
부모클래스의 속성과 기능을 받아 사용할수있고, 일부 기능에 대한 추가,수정이 필요할 때 상속받은 자식클래스에서만 재정의해 사용할 수 있음 - 다형성
하나의 변수/함수명이 상황에 따라 다르게 응답하는 것. 즉 오버라이딩, 오버로딩이 가능하다는 뜻
다형성은 상속과의 시너지가 높다(상속관계에 있다면 자식클래스가 새로 추가되어도 부모클래스의 함수를 참조하면 되기에 다른 클래스는 영향받지 않음)
오버라이딩=부모클래스와 같은이름+매개변수를 재정의
오버로딩=같은이름의 함수를 매개변수의 타입과 개수를 다르게 여러개 정의해서 매개변수에 따라 다르게 불러옴