[TIL] 2023-01-01 자바 - Class 쌩 기초

Jongdroid·2022년 12월 31일
1

TIL

목록 보기
24/24
post-thumbnail

객체지향 프로그래밍을 제대로 이해하지 못하고 막무가내(?)로 사용하고 있는 것 같은 생각이 여러번 들었다.
대충 알고 있는 것 == 모르는 것 😞 OOP 뽀개기 가보자 ❗️

오늘 다루는 내용

  • OOP 무엇?
  • 클래스의 생성
  • 클래스의 구성요소
  • 필드 접근

OOP 👀?

Object 객체 Oriented 지향 Programming 프로그래밍의 약자로 OOP는 객체지향 프로그래밍을 말한다.
쉽게 말하면 조립식 프로그래밍이라고 비유할 수 있을 것 같다.

자동차를 비유하면 사람은 자동차를 시동을 켜고, 핸들을 움직이는 등 다양한 행동을 하지만, 그 내부에는 수 많는 부품으로 이루어져있는 것처럼 부분부분을 만들어놓고 이를 연결시키는 프로그래밍이라고 생각해도 좋을 것 같다.

그래서 사람이 브레이크를 밟으면 브레이크 밟는 동작을 요청하고, 크락션을 울리면 크락션을 울릴 수 있는 동작을 리턴해준다.

자, 여기까지 좋다. 왜 OOP를 해야 할까?

한 곳에 코드를 쭉 작성하는 것이 아닌 이를 분리하여 작성하기 때문에 무엇보다 관리가 편할 것이다. 프로그램의 규모가 커지면 만 줄이 넘어가는 코드를 작성하게 되는데 에러가 발생하면 이를 수정하며 유지보수 하는 것이 쉽지 않을 것이다.

또 여러번 사용하게 되는 코드를 다시 만들어서 중복 코드를 만드는 것이 아니라 쉽게 코드를 재사용할 수 있다. 코드를 재사용하면 당연히 생산성이 올라가고 코드를 관리하기가 편할 것이다.


클래스의 생성

public class Dog {
    // 필드
    String name;
    int age;

    // 메소드
    // 짖기, 물기(?) 등 -> 강아지가 하는 행동(동작들)
    void bark() {
        System.out.println("왈왈 나는 강아지랍니다");
    }
}

클래스는 다음과 같이 class 예약어를 사용하며 첫 글자를 대문자로 사용하는 파스칼케이스를 사용한다.
(*당연히 자바에서 제공하는 예약어는 클래스명으로 사용할 수 없다.)

클래스의 구성요소

상단에서 이야기 했던 자동차를 예로 들면 자동차가 갖을 수 있는 속성을 클래스 안에서 만들게 되는데 이를 '필드' 라고 합니다.
자동차 필드의 예 - 자동차 이름, 자동차 회사 이름, 자동차 종류(하이브리드, 전기차) 등

또한 자동차가 할 수 있는 행동이나 동작을 클래스에서 표현할 수 있는데 이를 '메소드' 라고 합니다.
자동차 메소드의 예 - 경적, 브레이크, 방향등
(*생성자는 다음에 언급할 예정입니다.)


클래스 구성요소 접근하기

객체란 클래스에 선언된 모양 그대로 생성된 실체를 말하며 이를 '클래스의 인스턴스'라고 부른다.
인스턴스란 클래스를 통해서 구현해야할 객체가 실제로 구현된 구체적인 실체를 말한다.

말로 설명하니 참 복잡한 것 같다.

객체는 메인 클래스나 내가 사용하고자 하는 클래스에서 다음과 같이 생성할 수 있다.

객체 만들기

 Dog dog = new Dog();

다음과 같이 객체를 생성하면 Dog 클래스에 있는 필드에 접근할 수 있도록 준비가 된 것이다.
그리고 도트연산자를 통해 실제로 해당 클래스 필드에 접근한다.

도트 연산자를 통한 필드 접근

System.out.println(dog.age);
System.out.println(dog.name);

결과를 받아보면 0 null 이 출력된다. 왜냐하면 필드를 생성하고 값을 초기화하지 않으면 자동으로 기본 값으로 사용되기 때문이다.

기본 값이 아닌 직접 값 지정하기

dog.age = 2;
dog.name = "루루";

다음과 같이 도트연산자를 통해 필드의 값을 변경할 수 있으며 해당 값을 출력할 수 있다.

System.out.printf("강아지의 이름: %s\n", dog.name);
System.out.printf("루루의 나이: %d\n", dog.age);
profile
만드는 사람이 수고하면 쓰는 사람이 편하고 만드는 사람이 편하면 쓰는 사람이 수고롭다.

1개의 댓글

comment-user-thumbnail
2023년 1월 16일
  • 클래스 - 인스턴스 = 자동차 설계도 - 자동차
  • 인스턴스를 설명하기 좋은 대상: 기계류
  • 속성을 설명하기 좋은 대상: 생물류
  • 속성의 잘못 된 예: 자동차 이름, 자동차 회사 이름, 자동차 종류(하이브리드, 전기차) ︎▶︎ 정적인 요소보다는 가변적인 요소 ︎▶︎ 속도계, 연료계 등
답글 달기