본문 바로가기
Programming_Language/Java

Java - 객체지향 프로그래밍, 클래스, 객체란?

by Cocopop 2022. 12. 19.
반응형

자바를 생각하면 객체지향 프로그래밍(OPP : Object-oriented programming)을 생각할 거다.

객체지향 프로그래밍에서는 모든 데이터를 객체로 취급한다.

객체지향 프로그래밍을 시작하기 앞서 "객체지향 프로그래밍, 클래스, 객체"를 알아보고

기본 적인 내용을 시작하려고 한다.

 

 

 

1. 객체지향 프로그래밍이란?

- 주위 모든 사물을 뜻하는 객체라는 개념을 프로그래밍에 도입해서 실제 세상에서 사물의 속성(필드,변수)

기능(메소드), 사물 간의 관계를 컴퓨터 프로그램에서도 사용할 수 있게 프로그래밍 하는 방법.

예를 들어 자동차를 비유해보자!

자동차는 셀수 없이 많은 부품들이 모여 하나의 완성된 자동차가 된다.

초창기에는 이 자동차를 작은 부품들부터 새로 만들었을 것이다. 그만큼 시간도 오래 걸리게 되고,

금액도 비쌌으며, 특정 부분만 교체하거나 업그레이드를 하려면, 만든 당사자가 아닌 이상 쉽지 않다!

(예전 컴퓨터 프로그래밍을 명령어나 실행문, 함수의 집합으로 구현하여 위와 같이 개발하는 시간이 오래

걸리며, 유지보수도 어려웠음)

 

하지만 요즘은 부품들만 따로 미리 만들어 놓고, 자동차 업체는 이 부품들을 조립만해서 자동차를 완성

시킨다. 그만큼 생산 시간도 줄이고, 부품단위로 교체가 가능해진 것이다.

(객체지향 프로그래밍 도입으로 인해 개발 시간도 줄어들고 유지보수 수월해졌음)

 

이런식으로 객체지향 프로그램은 객체간에 독립적이기 때문에, 수정(부품교체)이나 추가사항(부품추가)

대한 작업이 수월하고, 객체들간의 관계를 파악하면 되기 때문에 소프트웨어 설계측면에서도 보다 직관적

으로 분석이 가능하다.

 

 

 

 

2. Class 란

- 객체의 상태를 나타내는 필드(변수)와 객체의 행동을 이행하는 메소드(함수)로 구성된다. (생성자 선택)

- 객체를 만들어 내기 위한 설계도와 같은 개념.

참고 : 실전 예제로 배우는 자바 프로그래밍

위에 사진을 보며 이해해보자!

클래스는 필드(변수)와 메소드로 구성 된 설계도 역할을 한다.

자동차 클래스 안에는 (자동차 이름, 기종 등)의 필드(변수)가 있으며, 각 자동차 부품(**핸들과 액셀, 브레이크 등)과**

관련 된 메소드들설계 되어 있다. 즉 자동차 클래스는 차를 만들기 위한 설계도이다.

이 설계도 하나로 신차를 여러 대를 만들 수 있는데 이 생산 된 자동차들이 바로 "객체"라고 생각하면 된다.

하지만 이 객체는 모두 다른 자동차가 된다.

 

 

예)

나와 누나가 SM5를 각자 샀다고 하자!

하지만 내가 산 자동차와 누나가 산 자동차는 같은 자동차가 아니다.

SM5의 차종만 같을 뿐이지 같은 자동차는 아니라는 것! 똑같이 생겨도 각 부품을 우리는 똑같이 부르지 않는다.

밑에 코드를 보며 이해해보자!

 

public class Car{
}


public class CarMain{

    public static void main(String[] args){

     Car m = new Car();
     Car m2 =  new Car();

     if(m == m2){
         System.out.println("m객체와 m2객체는 같다.");
     }
     else{
         System.out.println("m객체와 m2객체는 같지 않다.");
     }

    }

}

-> 결과 : m객체와 m2객체는 같지 않다.

 

 

위와 같이 자동차를 2대 샀지만, 그 둘은 같지 않는 결과가 나타났다. 같은 클래스 내에서 생성 된 것(같은 자료형)은 맞지만 저장된 주소값은 다르다!

이렇게 클래스를 이용해서 객체를 생성하는 것을 인스턴스(instance)화 한다고 표현한다.

(객체지향 프로그래밍의 객체)

 

 

인스턴스 : 실체화되어 메모리에 할당된 실체를 의미

 

 

 

 

3. 객체 란?

- Object로 불리며, 물리적으로 존재하거나 추상적으로 생각할 수 있는 모든 것.

- 클래스로 만들어진 물건(피조물)

- 변수, 메서드, 식별자에 의해 참조된 메모리 상의 값을 의미(속성과 기능을 가진 프로그램 단위)

 

객체지향 프로그램은 결국 클래스를 만들어 객체를 형성(인스턴스화) 하고 그것을 가지고 프로그래밍한다는 뜻이다.

클래스 자체만으로 구체화 될 수 없기에 객체는 무조건 만들어 줘야한다.

 

 

컴퓨터로 예를 들자면

컴퓨터 클래스(CPU, HDD, RAM, GPU,Mainboard 등)으로 여러 대 컴퓨터를 생산(인스턴스) 했다.

이때 생산 된 객체는 사양이 같을 수도 있고, 약간씩 다를 수 있다.

하지만 사용되는 기능들은 한 설계도에서 작성했기에 같다.

 

 

 

이렇게 총 3가지를 다뤄 봤는데, 자바를 배우기 위해서는 기본적으로 3가지는 조금이라도 이해하고 시작하는 것이 좋을 것 같아서 공부겸 적어보았습니다.

300x250