❤ 객체지향
객체 지향은 기능이 아닌 객체(모든 사물,생명체)가 중심이며 "누가 어떤 일을 할 것인가?"가 핵심이 됩니다.
즉, 필요한 데이터를 추상화시켜 객체를 도출하고 그 객체들간의 역할을 정의해 나가는 것입니다.

절차 지향 | ▶ 대형 프로그래밍의 경우 많은 기능을 수반하기 때문에 절차 지향보다는 객체 지향이 적합 ⦁ 각 객체가 하는 역할이 많아도, 많은 역할을 객체로 묶을 수 있기 때문 |
객체 지향 | ▶ 소형 프로그래밍의 경우 작은 기능을 수반하기 때문에 객체 지향보다는 절차 지향이 적합 ⦁ 작은 기능을 객체별로 나눌 경우, 오히려 복잡해질 수 있기 때문 |
❤ 객체지향 장단점 | |
장점 | ▶코드 재사용이 용이합니다. 이미 만들어진 클래스를 상속받거나 객체를 재사용하거나, 부분 수정을 통해 사용이 가능. ▶유지보수가 쉬웁니다. 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다. ▶대형 프로젝트에 적합합니다. 클래스 단위로 모듈화(프로그램을 구성하는 시스템을 기능 단위로 독립적인 부분으로 분리한 것)시켜서 개발 가능,그러므로 프로젝트처럼 여러명인경우 프로젝트를 개발할 때 업무 분담하기 쉽다. |
단점 | ▶처리 속도가 상대적으로 느립니다. (캡슐화 때문에 절차지향과 비교하면 실행 속도가 느리다. |
❤ 객체지향 특징 |
|
추상화 (abstraction) |
- 객체들의 공통적인 특징(기능, 속성)을 도출하는 것 - 클래스를 정의하는 것=추상화 (but 클래스가 없는 객체지향 언어도 존재 ex.JavaScript) |
캡슐화 (encapsulation) |
- 객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리하는 것 - 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다. - 코드가 묶여있어서 오류가 없어 편리하다. |
상속성 (inheritance) |
- 하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것 (객체지향 방법의 중요한 기능) 오버라이딩(Overriding) : 자식 클래스가 상속 받은 부모 메소드를 재작성 하는것(메서드의 내용만 변경 하는 것), 자식 객체를 통한 실행 시 후손(부모) 것이 우선권을 가짐 |
다형성 (polymorphism) |
- 동일한 이름으로 약간 다른 방법으로 동작하는 함수를 호출하는 것 오버로딩(Overloading) : 한 클래스 내에 동일한 이름의 생성자, 메소드를 여러 개 작성 하는것 (but 매개변수 타입,갯수,순서가 달라야함) |
동적바인딩 (Dynamic Binding) |
-실행 이후에 값이 확정되는것 - 실행 시간에 실제로 사용된 객체의 클래스형에 의해 호출될 함수가 결정됩니다 - 함수가 가상 함수로 선언이 되면, 포인터 변수가 실제로 가리키는 객체에 따라 호출의 대상이 결정된다 - 프로그래밍의 유연성을 높여주며 파생 클래스에서 재정의한 함수의 호출을 보장(다형성 실현) |
'Language > Java' 카테고리의 다른 글
필드 - 제어자 (0) | 2022.10.12 |
---|---|
Spring - IoC(Inversion of Control) (0) | 2022.09.12 |
Spring (0) | 2022.09.11 |
스레드 (0) | 2022.03.10 |
입출력 (Stream) (0) | 2022.03.03 |