[Java] 6. 객체지향 프로그래밍 1 #1 객체지향언어 & 클래스와 객체

2022. 4. 26. 11:28JAVA/Language

1. 객체지향언어

1.1 객체지향언어의 역사

초창기에는 주로 과학실험이나 모의실험을 위해 실제 세계와 유사한 가상 세계를 컴퓨터 속에 구현하고자 노력함 객체지향이론의 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용'라는 것입니다. 객체지향이론은 상속, 캡슐화, 추상화 개념을 주심으로 점차 구체적으로 발전합니다.

 

1.2 객체지향언어

객체지향언어의 특징

  1. 코드의 재사용성이 높음
    • 새로운 코드를 작성할때 기존의 코드를 이용하여 쉽게 작성할 수 있음
  2. 코드의 관리가 용이함
    • 코드간의 관계를 이용해서 적은 노력으로 코드를 쉽게 변경할 수 있음
  3. 신뢰성이 높은 프로그래밍이 가능함
    • 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있음

 

2. 클래스와 객체

2.1 클래스와 객체의 정의와 용도

클래스의 정의 및 용도

  • 클래스의 정의 : 클래스란 객체를 정의해 놓은 것, 객체를 위한 설계도에 비유
  • 클래스의 용도 : 클래스는 객체를 생성하는데 사용됨

 

객체의 정의 및 용도

  • 객체의 정의 : 실제로 존재하는 것, 사물 또는 개념
  • 객체의 용도 : 객체가 가지고 있는  기능과 속성에 따라 다름

 

2.2 객체와 인스턴스

인스턴스화(instantiate)란 무엇인가?

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 합니다. 따라서 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 할 수 있습니다.

 

2.3 객체의 구성요소 - 속성과 기능

객체의 구성

  • 속성(property) : 멤버 변수, 특성, 필드, 상태
  • 기능(function) : 메서드, 함수, 행위

 

2.4 인스턴의 생성과 사용

클래스명 변수명;         => 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(): => 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

TV t;
t = new TV();

 

 

2.5 객체 배열

객체 역시 배열로 다루는 것이 가능하며, 이를 '객체 배열'이라고 합니다. 객체 배열안에는 객체가 저장되는 것이 아닌 객체의 주소가 저장됩니다. 즉, 객체 배열은 참조변수들을 하나로 묶은 참조 변수 배열인 것을 알 수 있습니다.

TV tv1, tv2, tv3; => TV[] tvArr = new TV[3];

단 주의할 점은 객체 배열을 생성한 것은 그저 객체를 다루기 위한 촘자 변수들이 만들어진 것일뿐, 아직 객체가 저장되지는 않았습니다. 각각의 원소에 객체를 가리키기 위해서는 다음과 같이 할 수 있습니다.

TV[] tvArr = new TV[3];

for(int i = 0; i < 3; i++)
{
	tvArr[i] = new TV();
}

 

2.6 클래스의 또 다른 정의

클래스의 정의

  • 데이터와 함수의 결합
  • 사용자 정의 타입(user-defined type)
1. 변수 : 하나의 데이터를 저장할 수 있는 공간
2. 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
3. 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
4. 클래스 : 데이터와 함수의 결합(구조체 + 함수)

 

References

source code : https://github.com/yonghwankim-dev/java_study
Java의 정석, 남궁 성 지음