언어
-절차적언어: 순차적인 명령의 조합
-객체지향언어:’클래스’라고 부르는 데이터 모델의 청사진으로 사용해 코드 작성
OOP(객체 지향 프로그래밍)
: 모든 것은 ‘객체’로 그룹화,한번 만들고 나면 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지됨
객체 지향 프로그래밍의 주요 개념
캡슐화: 데이터와 기능을 하나의 단위로 묶는 것
-느슨한 결합: 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는것
=>언제든 구현을 수정할 수 있음
-은닉화: 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
=> 동작만 노출시킴
추상화: 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다.
-인터페이스: 클래스 정의시, 메서드와 속성만 정의한것
*캡슐화와 추사화의 차이점
=>캡슐화는 코드나 데이터의 은닉에 포커스,
추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스
상속: 부모 클래스의 특징을 자식 클래스가 물려받는것
Ex) 상위 클래스는 사람, 하위클래스는 학생
=>다시 구현하지 않고 학생의 본질은 사람이므로 상속이용하여 클래스 상속 가능
다형성:똑같은 메소드라 하더라도, 다른 방식으로 구현될 수 있다.
oop의 주요 개념의 장점