이롭게 현명하게

[JAVA] 객체 지향 프로그래밍 본문

JAVA

[JAVA] 객체 지향 프로그래밍

dev_y.h 2023. 4. 11. 18:17
728x90
반응형


 

목차

 

객체란?

객체의 상호작용

객체 간의 관계

객체 지향 프로그래밍의 특징

 


 

[정리]

<객체 지향 특성>

  1. 캡슐화
  2. 상속
  3. 다형성

1. 캡슐화 : 객체를 캡슐로 싸서 내부를 볼 수 없게 하듯이 객체를 외부의 접근으로부터 보호

  • 클래스(class) : 객체 모양을 선언한 틀( 캡슐화 ), 메소드(멤버함수)와 필드(멤버 변수)는 모두 클래스 내에 구현
  • 객체(object) : 클래스의 모양대로 생성된 실체(instance)m. 객체 내 데이터에 대한 보호, 외부 접근 제한

2. 상속 : 상위 개체의 속성이 하위 개체에 물려짐, 하위 객체가 상위 개체의 속성을 모두 가지는 관계

자식 클래스가 부모 클래스의 속성을 물려받고, 기능 확장

  • 부모 클래스 : 수퍼클래스
  • 하위 클래스 : 서브 클래스, 슈퍼클래스를 재사용하고 새로운 특성 추가

3. 다형성 : 같은 이름의 메소드가 클래스나 객체에 다라 다르게 동작하도록 구현

  • 메소드 오버로딩(생성) : 같은 이름이지만 다르게 작동하는 여러 메소드
  • 메소드 오버라이딩(상속) : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구현

[객체란?]

자동차를 만들 때 부품을 먼저 개발하고 부품들을 하나씩 조립해서 자동차를 완성한다.

자동차 생산제조 공정
자동차 차체용 프레스 부품. 사진=기아자동차

 

소프트웨어를 개발할 때에도 부품에 해당하는 객체들을 먼저 만들고 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체지향프로그래밍(OOP:Object Oriented Programming)이라고  한다.

 

객체 (Object) : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것 과 식별이 가능한 것

속성과 동작으로 구성되어 있다.

 

 

현실 세계에는 자동차가 있다.

자동차는 모델명, 색깔, 속도 등의 속성을 가지고 있다

자동차는 달린다, 멈춘다 등의 동작을 가지고 있다.

 

자바는 현실세계의 이 속성들과 동작들을 각각 필드(Field)와 메서드(method)라고 부른다.

객체 모델링 (Object Modeling) : 현실세계의 객체를 소프트웨어 객체로 설계하는 것

객체 모델링은 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메서드로 정의하는 과정이라고 볼 수 있다.


[객체의 상호작용]

현실세계에서 사람은 계산기의 기능을 이용한다. 계산기는 계산 결과를 사람에게 알려주는 상호작용을 한다.

소프트웨어도 마찬가지이다. 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작한다.

객체들 사이의 상호작용수단은 메서드이다.

메서드가 객체들 사이에서 의사소통 수단의 다리 역할을 한다.

메서드 호출은 객체에 도트( . ) 연산자를 붙이고 메서드 이름을 기술하면 된다.

도트 연산자는 객체의 필드와 메서드에 접근할 때 사용한다.

리턴값 = 계산기객체.메소드(매개값1, ...)

객체의 상호작용은 객체 간의 메서드 호출을 의미하며 매개 값과 리턴값을 통해서 데이터를 주고받는다.


[객체 간의 관계]

<객체 관계 종류>

  • 집합 관계 : 객체는 하나는 부품이고 하나는 완성품에 해당한다.
  • 사용 관계 : 객체 간의 상호 작용을 말한다.
  • 상속 관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다.

 

<집합관계>

자동차는 엔진, 타이어, 핸들 등으로 구성되어 있다.

자동차와 이 부품들은 집합의 관계라고 볼 수 있다.

 

 

<사용관계>

객체는 다른 객체의 메서드를 호출하여 원하는 결과를 얻어낸다.

사람을자동차를 사용하므로 사람과 자동차는 사용의 관계라고 볼 수 있다.

사람은 자동차를 사용할 때 달린다, 멈춘다 등의 메서드를 호출한다.

<상속관계>

상위 객체 : 종류

하위 객체 : 구체적인 사물

자동차는 기계의 한 종류이다. 이때 기계(상위)와 자동차(하위)는 상속 관계에 있다.


 

[객체 지향 프로그래밍의 특징]

  • 캡슐화 (Encapsulation)
  • 상속 (Inheritance)
  • 다형성 (Polymorphism)

 

<캡슐화 (Encapsulation)>

캡슐화 : 객체의 필드, 메서드를 하나로 묶고 실제 구현 내용을 감추는 것

외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용할 수 있다.

<캡슐화를 하는 이유>

외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해

자바는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용한다.

접근 제한자는 객체의 필드와 메서드의 사용 범위를 제한함으로써 외부로부터 보호한다.

 

클래스 (class) : 객체 모양을 선언한 틀(캡슐화)

- 메소드 ( 멤버함수)와 필드(멤버 변수)는 모두 클래스 내에 구현

객체(Object) : 클래스의 모양대로 생성된 실체(instance), 객체 내 데이터에 대한 보호, 외부 접근 제한

- 객체 외부에서는 비공개 멤버(필드, 메소드)에 직접 접근할 수 없음

- 객체 외부에서는 공개된 메소드를 통해 비공개 멤버 접근

<상속 (Inheritance)>

상속은 부모가 가지고 있는 재산을 자식에게 물려주는 것을 말한다.

객체 지향에서도 상위 객체와 하위 객체가 있다.

상위 객체는 자기가 가지고 있는 필드와 메서드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다.

<상속을 하는 이유>

상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여준다.

상속은 상위 객체의 수정으로 모든 하위 객체들의 수정효과를 가져오므로 유지 보수 시간을 최소화시켜주기도 한다.

 

상속 : 자식 클래스가 부모 클래스의 속성 물려받고 , 기능 확장

부모 클래스 : 슈퍼 클래스

하위 클래스 : 서브 클래스, 수퍼 클래스를 재사용하고 새로운 특성 추

<다형성 (Polymorphism)>

다형성은 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다.

코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.

자바는 다형성을 위해 부모클래스 또는 인터페이스의 타입 변환을 허용한다.

부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.

다형성의 효과로 객체는 부품화가 가능하다.

 

다형성 : 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현

- 메소드 오버로딩 : 같은 이름이지만 다르게 작동하는 여러 메소드

- 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구

 

 

 

 

 

 

[JAVA] 자바 객체와 클래스

목차 객체와 클래스 클래스 선언 객체 생성과 클래스 변수 클래스의 구성 멤버 필드 생성자 메소드 클래스(class) : 객체를 만들어내기 위한 설계도 혹은 틀, 객체의 속성(state)과 행동(behavior) 포함

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 클래스 필드  (0) 2023.04.13
[JAVA] 자바 객체와 클래스  (2) 2023.04.12
[JAVA] 데이터 타입 분류와 메모리 영역  (0) 2023.04.10
[JAVA] MySQL 이클립스 연동하기  (0) 2023.01.25
[JAVA] UDP 통신  (0) 2023.01.19
Comments