Java OOP 개념
이 페이지에서는 OOP의 기본 사항에 대해 알아보겠습니다. 객체 지향 프로그래밍은 상속, 데이터 바인딩, 다형성 등과 같은 많은 개념을 제공하는 패러다임입니다.
시뮬라는 최초의 객체 지향 프로그래밍 언어로 여겨집니다. 모든 것이 하나의 객체로 표현되는 프로그래밍 패러다임은 진정한 객체 지향 프로그래밍 언어로 알려져 있습니다.
스몰토크는 최초의 진정한 객체 지향 프로그래밍 언어로 여겨집니다.
객체 지향 프로그래밍의 주요 목적은 실제 엔티티(예: 객체, 클래스, 추상화, 상속, 다형성 등)를 구현하는 것입니다.
객체 지향 프로그래밍 시스템
오브젝트는 펜, 의자, 테이블, 컴퓨터, 시계 등과 같은 실제 개체를 의미합니다. 객체 지향 프로그래밍은 클래스와 객체를 사용하여 프로그램을 설계하는 방법론 또는 패러다임입니다. 다음과 같은 개념을 제공하여 소프트웨어 개발 및 유지보수를 단순화합니다.
- object
- class
- 상속
- 다형성
- 추상화
- 캡슐화
이러한 개념 외에도 객체 지향 설계에서 사용되는 몇 가지 다른 용어가 있습니다.
- 커플링
- 응집력
- Association
- 집합
- Composition
Object
상태 및 동작이 있는 엔티티를 개체라고 합니다. 예를 들어 의자, 펜, 테이블, 키보드, 자전거 등이 있습니다. 물리적 또는 논리적일 수 있습니다.
개체는 클래스의 인스턴스로 정의할 수 있습니다. 개체는 주소를 포함하며 메모리의 일부 공간을 차지합니다. 개체는 서로의 데이터 또는 코드의 세부 정보를 알지 않고도 통신할 수 있습니다. 필요한 것은 승인된 메시지 유형 및 개체가 반환하는 응답 유형뿐입니다.
예: 개는 꼬리 흔들기, 짖기, 먹기 등과 같은 행동뿐만 아니라 색깔, 이름, 품종 등과 같은 상태를 가지고 있기 때문에 Object입니다.
Class
개체 컬렉션을 클래스라고 합니다. 논리 엔티티입니다.
클래스를 개별 개체를 생성할 수 있는 Blueprint로 정의할 수도 있습니다. 클래스는 공간을 전혀 사용하지 않습니다.
상속
한 개체가 상위 개체의 모든 속성과 동작을 획득하면 상속이라고 합니다. 코드 재사용성을 제공합니다. 런타임 다형성을 달성하는 데 사용됩니다.
다형성
한 가지 작업이 다른 방식으로 수행될 경우 다형성이라고 합니다. 예를 들어, 고객을 다르게 설득하는 방법, 예를 들어 모양, 삼각형, 직사각형 등을 그릴 수 있습니다.
자바에서는 다형성을 달성하기 위해 메서드 오버로드와 메서드 오버라이딩을 사용합니다.
또 다른 예는 어떤 것을 말하는 것일 수 있습니다; 예를 들어, 고양이가 야옹거리고 개가 짖는 소리 등입니다.
추상화
내부 세부 정보를 숨기고 기능을 보여주는 것을 추상화라고 합니다. 예를 들어, 우리는 내부 처리를 모릅니다.
자바에서는 추상 클래스와 인터페이스를 사용하여 추상화를 실현합니다.
캡슐화
코드와 데이터를 단일 단위로 묶는 것을 캡슐화라고 합니다. 예를 들어, 캡슐은 다른 약으로 싸여 있습니다.
자바 클래스는 캡슐화의 예입니다. Java bean은 모든 데이터 구성원이 여기에 비공개이기 때문에 완전히 캡슐화된 클래스입니다.
커플링
커플링은 다른 클래스의 지식, 정보 또는 종속성을 의미합니다. 그것은 학급이 서로를 인식할 때 발생합니다. 클래스에 다른 클래스의 세부 정보가 있으면 강력한 결합이 있습니다. Java에서는 클래스, 메서드 및 필드의 가시성 수준을 표시하기 위해 개인, 보호됨 및 공용 수정자를 사용합니다. 구체적인 구현이 없기 때문에 약한 결합에 인터페이스를 사용할 수 있습니다.
응집력
응집력은 잘 정의된 단일 작업을 수행하는 구성 요소의 수준을 나타냅니다. 잘 정의된 단일 작업은 매우 응집력이 높은 방법으로 수행됩니다. 약하게 응집된 방법은 작업을 별도의 부분으로 분할합니다. java.io 패키지는 I/O 관련 클래스 및 인터페이스가 있기 때문에 결합력이 높은 패키지입니다. 그러나 java.util 패키지는 관련 없는 클래스 및 인터페이스가 있기 때문에 결합력이 약한 패키지입니다.
Assoication
연결은 개체 간의 관계를 나타냅니다. 여기서 한 개체는 한 개체 또는 여러 개체와 연결할 수 있습니다. 개체 간에는 네 가지 유형의 연결이 있을 수 있습니다.
- 일대일
- 일대일
- 다대일
- 다대다
실시간 예제와 관계를 알아보겠습니다. 예를 들어, 한 국가는 총리 한 명(1 대 1), 총리는 많은 장관(1 대 다수)을 가질 수 있습니다. 또한, 많은 국회의원들은 한 명의 총리를 가질 수 있고, 많은 장관들은 많은 부서들을 가질 수 있습니다.
연결은 단방향 또는 양방향일 수 있습니다.
Association
집계는 연관성을 달성하는 방법입니다. 집계는 한 개체가 다른 개체를 해당 상태의 일부로 포함하는 관계를 나타냅니다. 개체 간의 약한 관계를 나타냅니다. 자바에서는 has-a 관계라고도 합니다. 예를 들어, 상속은 현재의 관계를 나타냅니다. 이것은 객체를 재사용하는 또 다른 방법입니다.
Composition
그 구성은 또한 협회를 성취하기 위한 방법입니다. 구성은 한 개체가 다른 개체를 상태의 일부로 포함하는 관계를 나타냅니다. 포함하는 개체와 종속 개체 사이에는 강력한 관계가 있습니다. 포함된 개체가 독립적인 존재를 갖지 않는 상태입니다. 상위 개체를 삭제하면 모든 하위 개체가 자동으로 삭제됩니다.
절차 지향 프로그래밍 언어에 비해 OOP의 장점
1) OOP는 개발 및 유지보수를 쉽게 해주는 반면, 절차 지향 프로그래밍 언어에서는 프로젝트 크기가 증가함에 따라 코드가 커지면 관리하기 쉽지 않습니다.
2) OOP는 데이터를 숨기는 기능을 제공하는 반면, 절차 지향 프로그래밍 언어에서는 어디에서나 글로벌 데이터에 액세스할 수 있습니다.
그림: 프로시저 지향 프로그래밍의 데이터 표현입니다.
그림: 객체 지향 프로그래밍의 데이터 표현입니다.
3) OOP는 실제 이벤트를 훨씬 더 효과적으로 시뮬레이션할 수 있는 기능을 제공합니다. 객체 지향 프로그래밍 언어를 사용한다면 실제 단어 문제의 해결책을 제공할 수 있습니다.
객체 지향 프로그래밍 언어와 객체 기반 프로그래밍 언어의 차이점은 무엇입니까?
개체 기반 프로그래밍 언어는 상속을 제외한 OOP의 모든 기능을 따릅니다. JavaScript 및 VBScript는 객체 기반 프로그래밍 언어의 예입니다.
'SW > Java' 카테고리의 다른 글
Java : this 키워드 : 개념, 개요, 예제, 설명 (0) | 2023.02.28 |
---|---|
Java : 자바 생성자 : 개념, 예제, 개요, 설명 (0) | 2023.02.26 |
Java : 자바 제어문, 제어흐름 : 개요, 개념, 설명 (0) | 2023.02.21 |
Java : 자바 키워드 : 개념, 개요, 설명 (0) | 2023.02.20 |
Java : Operators 연산자 개념, 개요, 방법 (0) | 2023.02.19 |