프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음
속성(데이터)과 메서드(기능)를 따로 정의 하는것이 아닌 , 하나의 객체 안에 넣어서 묶는것
=> 속성과 메서드들이 느슨하게 결합됨
느슨한 결합은 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미
은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
(디테일한 내부 구현은 숨기고, 필요한 동작(메서드)만을 노출)
내부의 구현은 복잡해도 외부로 보이는 인터페이스를 단순화 시키는것
캡슐화는 은닉에 초점이 맞춰져있지만 , 추상화는 필요하지않은 메서드 등을 노출시키지 않음.
기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속
(원본을 바탕으로 메서드를 추가시키거나 삭제)
모양은 다르나 본질이 같음.
예시)Textarea(TextBox), Select, Checkbox
모두 input으로 분류되나 타입이 다름으로써 브라우저에 노출되는 인터페이스의 형태가 다름