본문 바로가기
LANGUAGE/java

[클래스] 객체지향 프로그래밍

by from_minjoo 2024. 4. 2.

 

객체지향 프로그래밍(Object-Oriented Programming, OOP)

객체지향 프로그래밍의 원리를 기반으로 하는 자바 프로그래밍 언어의 특징

소프트웨어를 모듈화하고 재사용 가능한 코드를 작성하는 방법론 중 하나


 

▶   객체지향 프로그래밍의 핵심 개념

  1. 클래스(Class) : 객체의 설계도 혹은 틀로서, 객체를 생성하기 위한 필드와 메서드를 정의한다. 자바에서 모든 코드는 클래스 내에 정의되어야 한다.
  2. 객체(Object) : 클래스의 인스턴스로서, 메모리 상에 실제로 존재하는 데이터와 그 데이터를 처리하는 메서드의 조합이다. 객체는 클래스로부터 생성된다.
  3. 상속(Inheritance): 클래스가 다른 클래스의 특징과 동작을 상속받아 확장할 수 있는 메커니즘이다. 상속을 통해 코드의 재사용성을 높이고, 계층적 구조를 만들 수 있다.
  4. 다형성(Polymorphism): 같은 이름의 메서드나 연산자가 다른 작업을 수행할 수 있는 능력이다. 다형성을 통해 코드의 유연성을 높이고, 코드의 가독성을 개선할 수 있다.
  5. 캡슐화(Encapsulation): 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶어 외부로부터 데이터에 직접 접근하는 것을 제어하는 메커니즘이다. 캡슐화를 통해 코드의 안정성과 보안성을 개선할 수 있다.

 

 객체지향 프로그래밍을 이해하기 위해 알아야 할 개념

   1.  객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것

   -   클래스라는 틀을 기반으로 생성되며, 클래스는 객체를 생성하기 위한 설계도 또는 틀을 제공함

 

  1) 객체의 구성 

  • 속성(필드)과 동작(메서드)로 구성되어 있다. 
  • 속성(필드): 데이터, 즉 이름, 나이 등
  • 동작(메서드): 기능, 즉 웃다, 먹다 등 

   2) 객체의 특징 

  • 속성(Attributes) 또는 필드(Fields): 객체가 가지는 데이터를 나타낸다. 이러한 데이터는 객체의 상태를 나타내며, 변수로 표현된다. 예를 들어, 자동차 객체의 속성으로는 브랜드, 모델, 색상 등이 있을 수 있다.
  • 메서드(Methods): 객체가 수행하는 동작을 나타낸다. 이러한 동작은 객체의 행위를 정의하며, 함수 또는 메서드로 구현된다. 예를 들어, 자동차 객체의 메서드로는 주행, 정지, 가속 등이 있을 수 있다.
  • 식별자(Identifier): 각 객체는 메모리 상에서 고유한 식별자를 가진다. 프로그램 요소에 이름을 부여하는 데 사용되는 이름입니다. 변수, 메소드, 클래스, 패키지 등 모든 요소에 이름을 지정할 때 사용된다.
  • 캡슐화(Encapsulation): 객체는 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶어 캡슐화된다.

    -  캡슐화는 아래와 같은 접근 제한자를 사용하여 달성한다.

  1. public : 어떤 클래스에서든 접근 가능
  2. protected : 같은 패키지 내의 클래스 및 하위 클래스에서만 접근 가능
  3. default (접근 제어자를 명시하지 않음) : 같은 패키지 내의 클래스에서만 접근 가능
  4. private : 같은 클래스 내에서만 접근 가능
  • 상태(State): 객체의 현재 상태는 속성(필드) 값의 집합으로 표현된다. 객체는 이러한 상태를 변경할 수 있으며, 이러한 상태 변경은 메서드를 통해 이루어진다.
  • 행위(Behavior): 객체는 메서드를 통해 정의된 동작을 수행할 수 있다. 객체의 행위는 메서드를 호출함으로써 이루어지며, 이를 통해 객체 간의 상호작용이 이루어진다.

 

2.  객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것

-   현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정 

 


 

3. 객체의 상호작용 : 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작한다. 

-   메소드 : 객체들 사이의 상호작용 수단 

-   메소드 호출 : 객체가 다른 객체의 기능을 이용하는 것