logo

Java OOP 개념

  1. 객체 지향 프로그래밍
  2. 절차 지향 프로그래밍 언어에 비해 OOP의 장점
  3. 객체 지향 프로그래밍 언어와 객체 기반 프로그래밍 언어의 차이점

이번 페이지에서는 OOP의 기본에 대해 알아봅니다. 객체 지향 프로그래밍은 다음과 같은 많은 개념을 제공하는 패러다임입니다. 계승 , 데이터 바인딩 , 다형성 , 등.

시작 최초의 객체 지향 프로그래밍 언어로 간주됩니다. 모든 것이 객체로 표현되는 프로그래밍 패러다임은 진정한 객체지향 프로그래밍 언어로 알려져 있습니다.

잡담 최초의 진정한 객체 지향 프로그래밍 언어로 간주됩니다.

널리 사용되는 객체지향 언어는 다음과 같습니다. 자바 , 씨# , PHP , 파이썬 , C++ , 등.

객체지향 프로그래밍의 주요 목표는 객체, 클래스, 추상화, 상속, 다형성 등과 같은 실제 엔터티를 구현하는 것입니다.

배열 요소 추가 자바

OOP(객체 지향 프로그래밍 시스템)

물체 펜, 의자, 테이블, 컴퓨터, 시계 등과 같은 실제 개체를 의미합니다. 객체 지향 프로그래밍 클래스와 객체를 사용하여 프로그램을 설계하는 방법론 또는 패러다임입니다. 다음과 같은 몇 가지 개념을 제공하여 소프트웨어 개발 및 유지 관리를 단순화합니다.

이러한 개념 외에도 객체 지향 디자인에 사용되는 몇 가지 다른 용어가 있습니다.

  • 커플 링
  • 응집력
  • 협회
  • 집합
  • 구성
Java OOP 개념

물체

자바 객체

상태와 동작이 있는 모든 엔터티를 객체라고 합니다. 예를 들어 의자, 펜, 테이블, 키보드, 자전거 등이 있습니다. 이는 물리적일 수도 있고 논리적일 수도 있습니다.

객체는 클래스의 인스턴스로 정의될 수 있습니다. 객체는 주소를 포함하고 메모리에서 일부 공간을 차지합니다. 객체들은 서로의 데이터나 코드의 세부사항을 알지 못해도 통신할 수 있습니다. 유일하게 필요한 것은 허용되는 메시지 유형과 객체가 반환하는 응답 유형입니다.

예: 개는 색깔, 이름, 품종 등과 같은 상태뿐만 아니라 꼬리 흔들기, 짖기, 먹기 등과 같은 행동도 갖고 있기 때문에 객체입니다.

수업

객체 수집 클래스라고 합니다. 논리적 엔터티입니다.

클래스는 개별 객체를 생성할 수 있는 청사진으로 정의될 수도 있습니다. 클래스는 공간을 소비하지 않습니다.

계승

한 개체가 상위 개체의 모든 속성과 동작을 획득하는 경우 , 이는 상속으로 알려져 있습니다. 코드 재사용성을 제공합니다. 런타임 다형성을 달성하는 데 사용됩니다.

Java의 다형성

다형성

만약에 하나의 작업이 다른 방식으로 수행됨 , 이는 다형성으로 알려져 있습니다. 예: 고객에게 다르게 설득하기 위해, 예를 들어 모양, 삼각형, 직사각형 등과 같은 것을 그리기 위해.

Java에서는 다형성을 달성하기 위해 메서드 오버로딩과 메서드 재정의를 사용합니다.

또 다른 예는 무언가를 말하는 것입니다. 예를 들어, 고양이는 야옹 소리를 내고, 개는 짖는 소리 등을 합니다.

추출

내부 세부정보 숨기기 및 기능 표시 추상화로 알려져 있다. 예를 들어 전화 통화 등 내부 처리 과정을 알 수 없습니다.

Java에서는 추상화를 달성하기 위해 추상 클래스와 인터페이스를 사용합니다.

Java OOP 개념의 캡슐화

캡슐화

코드와 데이터를 단일 단위로 바인딩(또는 래핑)하는 것을 캡슐화라고 합니다. . 예를 들어, 캡슐은 다양한 약품으로 포장되어 있습니다.

Java 클래스는 캡슐화의 예입니다. 여기에서는 모든 데이터 멤버가 비공개이므로 Java Bean은 완전히 캡슐화된 클래스입니다.

커플 링

결합은 다른 클래스의 지식이나 정보 또는 종속성을 나타냅니다. 이는 클래스가 서로를 인식할 때 발생합니다. 한 클래스가 다른 클래스의 세부 정보를 가지고 있으면 강한 결합이 있습니다. Java에서는 클래스, 메소드 및 필드의 가시성 수준을 표시하기 위해 private, protected 및 public 수정자를 사용합니다. 구체적인 구현이 없기 때문에 약한 결합에 인터페이스를 사용할 수 있습니다.

응집력

응집력은 잘 정의된 단일 작업을 수행하는 구성 요소의 수준을 나타냅니다. 잘 정의된 단일 작업은 응집력이 뛰어난 방법으로 수행됩니다. 약한 응집력 방법은 작업을 별도의 부분으로 분할합니다. java.io 패키지는 I/O 관련 클래스와 인터페이스를 갖고 있기 때문에 응집력이 매우 높은 패키지입니다. 그러나 java.util 패키지는 관련되지 않은 클래스와 인터페이스를 갖고 있기 때문에 응집력이 약한 패키지입니다.

협회

연관(Association)은 객체 간의 관계를 나타냅니다. 여기서 하나의 개체는 하나의 개체 또는 여러 개체와 연결될 수 있습니다. 개체 간에는 네 가지 유형의 연관이 있을 수 있습니다.

  • 1-1
  • 일대다
  • 다대일, 그리고
  • 다대다

실시간 예시와의 관계를 이해해 봅시다. 예를 들어, 한 국가에는 총리가 한 명(일대일) 있을 수 있고, 총리에는 여러 장관(일대다)이 있을 수 있습니다. 또한 많은 국회의원은 한 명의 총리(다대일)를 가질 수 있고, 많은 장관은 여러 부서(다대다)를 가질 수 있습니다.

연관은 단방향 또는 양방향일 수 있습니다.

집합

Aggregation은 Association을 달성하는 방법입니다. 집계는 한 개체가 해당 상태의 일부로 다른 개체를 포함하는 관계를 나타냅니다. 개체 간의 약한 관계를 나타냅니다. 라고도 불린다. 가지고있다 자바에서의 관계 마찬가지로 상속은 is-a 관계. 이는 객체를 재사용하는 또 다른 방법입니다.

디스플레이 크기를 아는 방법

구성

구성은 연관성을 달성하는 방법이기도 합니다. 컴포지션은 한 개체가 해당 상태의 일부로 다른 개체를 포함하는 관계를 나타냅니다. 포함하는 개체와 종속 개체 사이에는 강한 관계가 있습니다. 포함하는 객체가 독립적으로 존재하지 않는 상태입니다. 상위 개체를 삭제하면 모든 하위 개체도 자동으로 삭제됩니다.


절차 지향 프로그래밍 언어에 비해 OOP의 장점

1) OOP는 개발과 유지관리를 쉽게 해주는 반면, 절차지향 프로그래밍 언어에서는 프로젝트 규모가 커짐에 따라 코드가 늘어나면 관리가 쉽지 않습니다.

2) OOP는 데이터 숨김 기능을 제공하는 반면, 절차 지향 프로그래밍 언어에서는 전역 데이터에 어디서나 액세스할 수 있습니다.

글로벌 데이터

그림: 절차 지향 프로그래밍의 데이터 표현


객체 데이터

그림: 객체 지향 프로그래밍의 데이터 표현

3) OOP는 실제 이벤트를 훨씬 더 효과적으로 시뮬레이션하는 기능을 제공합니다. 객체 지향 프로그래밍 언어를 사용하면 실제 단어 문제에 대한 솔루션을 제공할 수 있습니다.


객체 지향 프로그래밍 언어와 객체 기반 프로그래밍 언어의 차이점은 무엇입니까?

객체 기반 프로그래밍 언어는 상속을 제외한 OOP의 모든 기능을 따릅니다. JavaScript와 VBScript는 객체 기반 프로그래밍 언어의 예입니다.



당신은 알고 있나요?
  • main 메소드를 오버로드할 수 있나요?
  • Java 생성자는 값을 반환하지만 무엇입니까?
  • main 메소드 없이 프로그램을 만들 수 있나요?
  • 이 키워드를 사용하는 6가지 방법은 무엇입니까?
  • Java에서 다중 상속이 지원되지 않는 이유는 무엇입니까?
  • 집계를 사용하는 이유는 무엇입니까?
  • 정적 메서드를 재정의할 수 있나요?
  • 공변 반환 유형이란 무엇입니까?
  • Java 슈퍼 키워드의 세 가지 사용법은 무엇입니까?
  • 인스턴스 초기화 블록을 사용하는 이유는 무엇입니까?
  • 빈 최종 변수의 사용법은 무엇입니까?
  • 마커 또는 태그가 지정된 인터페이스란 무엇입니까?
  • 런타임 다형성 또는 동적 메서드 디스패치란 무엇입니까?
  • 정적 바인딩과 동적 바인딩의 차이점은 무엇입니까?
  • Java에서 다운캐스팅이 어떻게 가능합니까?
  • 개인 생성자의 목적은 무엇입니까?
  • 객체 복제란 무엇입니까?
OOP 개념에서는 무엇을 배울까요?
  • OOP의 장점
  • 명명 규칙
  • 객체와 클래스
  • 메소드 오버로딩
  • 건설자
  • 정적 키워드
  • 6번의 사용법을 가진 이 키워드
  • 계승
  • 집합
  • 메소드 재정의
  • 공변 반환 유형
  • 슈퍼 키워드
  • 인스턴스 초기화 블록
  • 최종 키워드
  • 추상 수업
  • 상호 작용
  • 런타임 다형성
  • 정적 및 동적 바인딩
  • instanceof 연산자를 사용한 다운캐스팅
  • 패키지
  • 액세스 수정자
  • 캡슐화
  • 객체 복제