Search
Duplicate

[5주차] 클래스

목차

목표

자바의 Class에 대해 학습하세요.

학습할 것 (필수)

클래스 정의하는 방법
객체 만드는 방법 (new 키워드 이해하기)
메소드 정의하는 방법
생성자 정의하는 방법
this 키워드 이해하기

과제 (Optional)

int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요.
int value, Node left, right를 가지고 있어야 합니다.
BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.
DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.

클래스 정의하는 방법

클래스란?

객체를 정의해놓은 것으로 객체를 생성하는데 사용된다.
여기서 객체란 '실제 존재하는 것'으로 지금 이 포스팅을 작성하는 키보드부터 책상, 컴퓨터, 의자 등의 사물들이 객체라 할 수 있다. 프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 의미한다.
유형의 객체: 책상, 의자, 컴퓨터, 키보드, TV
무형의 객체: 수학공식, 프로그램 에러와 같은 논리 및 개념
객체와 클래스의 관계를 실행활에 비유를 하자면 제품 설계도와 제품의 관계로 볼 수 있다. TV 설계도는 TV를 정의한 것으로 TV를 보기위해서는 설계도가 아니라 TV가 필요한 것처럼 클래스도 객체를 만드는데만 사용된다. 그리고 객체는 클래스를 통해 생성한 다음에야 사용 가능하다.
이처럼 클래스를 선언해두면 그 이후 필요할 때마다 해당 클래스를 통해 객체를 생성해 사용할 수 있다. 클래스는 객체를 정의하기 위한 상태(멤버 변수)와 메서드(함수)로 구성된다.

클래스의 시각화

클래스를 시각화 해서 살펴보면 위와같이 외부에 노출되는 행위(Public API)와 외부에 노출되지 않는 내부 상세 구현부가 있습니다. 자전거를 클래스로 만든다고 할 때 각각의 자전거 회사는 자전거 객체에 대해 필요한 인스턴스 변수 즉, 기어, 현재 케이던스 등을 선언합니다. 그 다음 라이더가 기어 변경 및 브레이크를 밟고 페달링 케이던스를 변경할 수 있도록 하는 인스턴스 메서드에 대한 구현을 선언하고 제공합니다.
이제 각각의 인스턴스 변수와 인스턴스 메소드들을 입맛에 맞게 구현해서 사용할 수 있게 됩니다.

클래스를 정의하는 방법

작성 규칙

하나 이상의 문자로 이뤄져야 한다.
Car, SportsCar
첫 번째 글자는 숫자가 올 수 없다.
3Car
$, _ 외의 특수 문자는 사용할 수 없다.
@Car, #Car
자바 키워드는 사용할 수 없다.
int, for

클래스 정의 과정

1.
소스파일 생성
: 적절한 위치에 원하는 클래스이름.java 로 소스 파일을 생성해준다. (이 때 클래스 이름은 작성 규칙을 지켜주도록 한다.)
2.
클래스에는 객체에 필요한 구성들을 선언해준다.
package me.catsbi.study.step5; public class 클래스이름 { private String 필드; public 클래스이름() { } // 생성자 public void 메소드(){ ... } }
Java
복사
필드 : 객체의 데이터가 저장됩니다. 필드에 들어가는 변수들은 다양한 타입을 제공하며 더 자세한 내용은 [2주차] 자바 데이터 타입, 변수 그리고 배열 에서 확인 가능합니다.
생성자 : 객체 생성시 초기화를 진행하며 생성된 객체를 반환합니다. 하나의 설계도(클래스)를 통해 여러 객체를 만들 때 필요한 정보들을 인수로 받아서 객체를 생성해 사용할 수 있도록 합니다.
메소드 : 객체의 동작을 선언하는 블록으로 메소드를 호출하면 중괄호 내의 코드가 수행되며 적절항 행동을 취합니다.

예제:: 자동차 클래스 정의하기

package me.catsbi.study.step5; public class Car { private String manufacturer; private String name; private long price; private int numberOfWheel; public Car(String manufacturer, String name, long price, int numberOfWheel) { this.manufacturer = manufacturer; this.name = name; this.price = price; this.numberOfWheel = numberOfWheel; } public Car() { } public void go(){ System.out.println("앞으로 전진합니다."); } public void stop(){ System.out.println("멈춥니다."); } }
Java
복사
자동차 클래스는 제조사,이름, 가격, 바퀴수라는 정보를 가지고 있으며, 전진과 정지 메소드를 가지고 있습니다.

객체 만드는 방법 (new 키워드 이해하기)

Car car = new Car();
설계도(클래스)를 작성했다면, 이제 이 설계도를 통해 객체를 생성할 수 있습니다.
Java의 new 키워드는 클래스의 인스턴스를 만드는데 사용됩니다. 즉, 새 객체에 대한 메모리를 할당하고 해당 메모리에 대한 참조를 반환하여 클래스를 인스턴스화 합니다.

new keyword 특징

객체를 만드는데 사용됩니다.
런타임에 메모리를 할당합니다.
모든 객체는 힙 영역에서 메모리를 차지합니다.
객체 생성자를 호출합니다.
생성자를 호출하려면 단일 후위 인수가 필요합니다.

메소드 정의하는 방법

생성자 정의하는 방법

this 키워드 이해하기

int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요.

int value, Node left, right를 가지고 있어야 합니다.

BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.

DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.