본문 바로가기
내일배움캠프

내일배움 캠프 8일차 TIL - 객체 지향 언어 Java 클래스에 대해 알아보자

by Kiwimel0n 2024. 1. 3.
  • 오늘의 키워드

객체  지향 프로그래밍, 클래스, 필드, 메서드

  • 오늘 배운 내용 정리

자바는 객체지향 프로그래밍을 할 수 있는 언어 중에 하나로

현실세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만들 수 있다. 이러한 기법을 '객체지향 프로그래밍'이라고 한다.

 

객체란?

세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미

ex)물리적으로 존재하는 자동차, 도서관, 계산기를 객체라고 봄

      강의 ,배달 주문, 운동과 같은 개념적인 것 또한 식별이 가능하기 때문에 객체라고 본다.

 

객체는 속성행위로 구성.

ex) 자동차라는 객체를 속성과 행위로 표현하여 보면

자동차는 회사, 모델, 색상, 가격, 속도등의 속성을  가질 수 있다.

자동차는 가속, 브레이크, 기어변속, 조명, 경적등의 행위를 가질 수 있다.

 

Java에서는 이러한 속성과 행위를 필드메서드로 정의하여 구현한다.

 

우리는 객체를 생성하기 위한 설계도가 필요로 한다.

ex) 현실 세계에서 자동차를 만들기 위하여 자동차 설계도를 토대로 만드는 것처럼.

소프트웨어에서도 객체를 만들기 위해서는 설계도에 해당하는 클래스가 필요하다.

 

 

클래스는 객체를 생성하기 위한 설계도라고 하였다.

클래스 구성 멤버에는 필드, 생성자, 메서드가 있다.

 

우리가 클래스를 만들기 위해서는 4가지 단계가 필요로 한다.

  1. 만들려고 하는 설계도를 선언한다.(클래스 선언)
  2. 객체가 가지고 있어야 할 속성(필드)을 정의한다.
  3. 객체가 생성하는 방식을 정의한다.(생성자)
  4. 객체가 가지고 있어야할 행위(메서드)를 정의한다.

자동차 클래스를 예제로 설명을 해보겠다.

 

1. 만들려고 하는 설계도를 선언(클래스 선언)

 

public class Car {} // 공개된 자동차 클래스 선언을 의미한다.

 

2. 객체가 가지고 있어야할 속성(필드)를 정의한다.

 

public class Car {
		String company; // 자동차 회사
    String model; // 자동차 모델
    String color; // 자동차 색상
    double price; // 자동차 가격
    double speed;  // 자동차 속도 , km/h
    char gear; // 기어의 상태, P,R,N,D
    boolean lights; // 자동차 조명의 상태
}

필드는 객체의 속성으로써 데이터를 저장하는 역할을 한다.

선언한 클래스 안에 속성(필드)들을 각각 모델, 색상, 가격, 속도, 기어의 상태, 조명의 상태들을 정의해주었다.

 

3. 객체가 생성하는 방식을 정의한다.(생성자)

 

public Car() {}

자동차 객체의 생성방식을 public Car() {} 라고 선언을 한다.

생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일합니다.

괄호() 안에 아무것도 없는 생성자를 기본생성자라고 한다.

 

4.객체가 가지고 있어야할 행위(메서드)를 정의한다.

 

double gasPedal(double kmh) {
        speed = kmh;
        return speed;
    } // 반환타입이 double인 gasPedal(double kmh)메서드를 선언하여 
    	// 매개변수가 kmh를 통해 매개값을 전달받아 자동차의 속성인 speed필드에 해당값을 저장.

    double brakePedal() {
        speed = 0;
        return speed;
    } // 반환타입이 double 인 brakePedal() 메서드를 선언하여
     //  메서드가 호출되면 자동차의 속성인 speed 필드의 값을 0으로 바꾼후 speed의 값을 반환.

		char changeGear(char type) {
        gear = type;
        return gear;
    } // 반환타입이 char 인 changeGear(char type) 메서드를 선언하여
     //  매개변수인 type을 통해 매개값을 전달받아 메서드가 호출되면 
     // 	자동차의 속성인 gear 필드에 해당 값을 저장.

    boolean onOffLights() {
        lights = !lights;
        return lights;
    }	// 반환타입이 boolean 인 onOffLights() 메서드를 선언하여
    	// 메서드가 호출되면 자동차의 속성인 lights의 현재 논리 값을 
        // 반전 시킨 후 lights의 값을 반환

		void horn() {
        System.out.println("빵빵");
    }  // 반환값이 없는 horn() 메서드를 선언하여
       // 메서드가 호출되면 자동차의 경적소리인 “빵빵”이 출력

 

이렇게 간단하게 클래스의 구성을 알아보았다.

 

  • 오늘의 회고

이러한 기본적인 내용 이후말고도 심화 과정의 강의를 수강하였지만 아직도 이해가 되지않아 조금더 회차를 반복해서 봐야겠다. 자바의 특색인 객체지향프로그래밍인 만큼 노력해서 내것으로 만들어야겠다.