(Object-Oriented-Programming)
절차적 프로그래밍에서 함수를 활용하여 모듈화하여 사용하는 경우가 많다. 만약 자판기에 존재하는 콜라에 대한 함수를 구현한다면 콜라라는 자료형, 콜라에 대한 함수(가격, 수량, 맛 등등)가 필요할 것이다. 하지만 절차적 프로그래밍은 이 둘을 논리적으로 묶을 수 없다.
객체지향 프로그래밍은 위처럼 데이터와 데이터에에 대한 함수를 함께 묶어 '객체'라는 형태를 사용한다.
위 콜라라는 객체를 생성하면,
public class Coke{
int price;
int quantity;
String taste;
public void sell(){
}
public void fill(){
}
}
콜라의 맛, 가격, 수량, 유통기한 같은 필드값과 팔기, 자판기에 채우기 등의 메소드들을 묶어 관리가 가능해진다.
이러한 객체를 생성함에 따라 객체간의 독립성이 뚜렷하게 생기고, 중독되는 코드의 양이 줄어든다.
Object(객체) : 해당 클래스를 기반을 생성된 인스턴스 모두
Coke cokaCola = new Coke()
Coke pepsi = new Coke()
class(클래스) : 해당 객체의 필드값과 메서드가 정의 되어 있는 코드 블럭
public class Coke{}
attribute(필드값) : 해당 객체가 가진 변수 값
int price
,int quantity
,String taste
method(메서드) : 해당 객체를가 가진 함수(기능 수행)
public void sell()
,public void fill()
- 코드의 재사용성이 높다
- 유지보수에 용이하다
- 코드의 가독성이 높아진다
- 복잡하고 규모가 큰 대형 프로젝트에 적합하다
- 처리속도가 비교적 느리다
- 객체가 용량을 많이 차지할 수 있다
- 설계시 시간과 비용이 많이 든다.