관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

클래스와 객체 3 - 자바 클래스 만들기 2 : 책 학습 및 예제 풀기 본문

프로그래밍 언어/자바

클래스와 객체 3 - 자바 클래스 만들기 2 : 책 학습 및 예제 풀기

huenuri 2024. 8. 16. 12:45

클래스와 객체에 대한 개념 학습은 모두 진행했지만 책에 있는 내용을 확인하며 다시 한번 복습해보고자 한다. 클래스 예제도 2문제 있는데 이 문제도 풀어봐야겠다.


 

 

 

 

 

1. 클래스와 객체

 

 

 

 

 

 

 


 

 

2. 클래스 구성

 

클래스의 구성 요소를 멤버라고 부르며, 멤버는 필드와 메소드의 두 가지이다. 다음은 원을 추상화한 클래스 Circle을 작성한 코드를 보여준다.

 

 

클래스 선언, class Circle

중괄호 안에 필드와 메소드를 모두 작성한다. 클래스 외부에는 어떤 필드나 메소드를 둘 수 없다. 이는 캡슐화의 원칙 때문이다.

 

 

필드와 메서드

객체 내에 값을 저장할 멤버 변수를 필드라고 부른다.  메소드는 함수이며 객체의 행동을 구현한다.

 

 

접근 지정자, public

public은 다른 클래스에서 활용하거나 접근할 수 있음을 선언한다. 접근 지정자를 생략할 때 디폴트 접근이라고 부른다.

 

 

생성자

클래스 이름과 동일한 메소드를 생성자라고 한다. 생성자는 객체가 생성될 때 자동으로 호출되는 특별한 메소드이다.


 

 

 

 

 

3. new 연산자와 객체 생성, 그리고 레퍼런스 변수

 

 

 

 레퍼런스 변수 선언

객체를 생성하기 전, 객체를 가리킬 레퍼런스 변수를 먼저 선언한다.

Circle pizza;	// 레퍼런스 변수 pizza 선언

 

 

이 선언문으로는 Circle 타입의 객체가 생성되지 않는다. 변수 pizza는 Circle 클래스의 객체에 대한 주소, 즉 레퍼런스를 가지는 변수일 뿐 객체 자체는 아니다. 아직 객체가 생성된 것이 아니며, 레퍼런스 변수만 생기고 null로 초기화된다.

 

 

 

 

객체 생성, new 연산자 이용

자바에서는 반드시 new 연산자를 사용하여 다음과 같이 객체를 생성한다.

pizza = new Circle();

 

타입 크기의 메모리를 할당하고, 생성자 코드를 실행한다. 레퍼런스 변수 선언과 객체 생성은 동시에 할 수도 있다.


 

 

 

 

4. 객체 멤버 접근

객체의 멤버에 접근할 때는 레퍼런스 변수 뒤에 점(.) 연산자를 붙인다.

pizza.radius = 10;

 

이 코드의 실행 결과 radius 필드 값이 10으로 바뀌었다. pizza 객체의 raidius 필드 값을 읽을 때는 다음과 같이 하면 된다.

 

int r = pizza.radius;

 

이제 문제를 풀어보며 이 부분을 좀더 학습해보기로 하자.


 

 

 

 

Circle 클래스의 객체 생성 및 활용

반지름과 이름을 가진 Circle 클래스를 작성하고, Circle 클래스의 객체를 생성하라. 그리고 객체가 생성된 모습을 그려보라.

 

 

 

 

2개의 객체가 만들어지며 이렇게 값이 잘 출력이 되고 있다. 이 예제를 풀기 전에는 난 모든 클래스는 main과 다른 클래스로 분리해야 하는줄 알았다. 하지만 하나에 만들어도 이렇게 잘 불러와지는 걸 알게 되었다.


 

 

 

 

Ractangle 클래스 만들기 연습

너비와 높이를 입력 받아 사각형의 합을 출력하는 프로그램을 작성하라. 너비(widgh)와 높이(height) 필드, 그리고 면적 값을 제공하는 getArea() 메소드를 가진 Rectangle 클래스를 만들라.

 

 

 

이번에는 main 클래스와 Rectangle 클래스를 서로 분리해서 코드를 작성했다. 처음에는 rect에 빨간줄이 떠서 무슨 문제가 생긴줄 알았다. 근데 저장하지 않으면 그런 거였다. 둘을 분리하든 함께 쓰든 결과는 같았다. 이제 객체를 생성하는 것도 많이 익숙해졌다.


 

 

 

학습을 마치고

수업 예제가 2개 정도 남아있지만 그 부분은 생성자에 대해서 많이 다루고 있기에 이 학습을 진행하고 추후에 강의를 들으며 정리해보기로 했다.

오늘 오후 시간에는 생성자에 대해서 공부해볼 생각이다. 엘리스부터 학습하고 책으로도 공부해봐야지!