반응형

목표

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

 

학습할 것

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

클래스 정의하는 방법

JAVA 클래스(class)를 찾으면 '자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다.'

라는 설명을 많이 볼 수 있을 것이다.

내가 읽은 자바 책에서 클래스에 대한 설명도 틀에 비교하여 설명되어 있었다.

나는 이 이라는 단어가 클래스를 잘 설명해준다고 생각한다.

 

클래스객체의 상태를 나타내는 필드와 객체의 행동을 나타내는 메서드로 구성된다.

필드는 클래스에 포함된 변수를 의미하고 메서드는 특정 작업을 수행하기 위한 명령문의 집합이라고 할 수 있다.

 

사람을 클래스로 표현한다고 예를 들어보자

여기서 사람은 객체가 되고, 사람의 상태를 나타내는 필드는 이름, 나이, 키, 몸무게 등이 있을 수 있을 것이고, 행동으로는 '밥을 먹다'가 메서드가 될 것이다. 

 

 

1. class 정의

위의 예시를 이용해서 클래스를 정의해 보았다.

Person이라는 클래스를 정의함으로써 많은 사람들을 만들 수 있는 틀이 준비된 것이다.

 

객체 만드는 방법

우리는 클래스를 이용해서 사람을 만들 수 있는 틀을 만든 것뿐이지 실제 사람을 만든 것은 아니다.

이제 틀을 이용해서 여러 사람을 만들어 보겠다. 

 

2. 객체 생성

실제 사람들을 만들 때는 new라는 키워드를 이용해서 만든다. 

위의 예시는 new라는 키워드를 이용해서 길동과 영수를 만들어보았다.

이제 우리는 길동과 영수를 만들었으니 행동을 시켜보겠다.

 

메서드 정의하는 방법

메서드를 정의하는 방법은 1.class 정의 캡처 이미지에서 public void eat() {} 이 부분이 메서드를 정의 한 곳이다.

public은 접근제어 지시자라는 키워드인데, 아래에서 조금 더 자세히 설명드리도록 하겠다. 지금은 넘어가자

그다음 void 위치에는 반환 타입이 들어가는데, void는 반환 타입이 없다는 뜻을 의미한다.

내가 숫자를 반환하고 싶다면 int, 문자를 반환하고 싶다면 String 등을 작성하면 된다. 

마지막으로 eat는 메서드명을 의미한다. (메서드명은 그 행동을 명확하게 알 수 있게 네이밍 해주는 것이 좋다.)

이제 메서드를 이용해서 행동을 만들어 보았다면 길동이와 영수가 행동할 수 있도록 사용해보도록 하겠다.

 

3.  메서드 사용

new라는 키워드를 사용해서 생성한 gildong, youngsu를 인스턴스라고 부르는데 생성된 인스턴스 점(.) 메서드명을 작성해서 행동을 시킬 수 있다. 

 

그 결과 위와 같다. 그런데 위의 결과를 보고서는 누가 밥을 먹었는지 알 수가 없다. 그래서 누가 밥을 먹었는지 추가해보도록 하겠다.

 

생성자 정의하는 방법, this 키워드 이해하기

생성자객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메서드이다. 

지금 우리는 생산자라는 것을 작성한 적이 없지만 사용되었다.

무슨 의미이냐면 만약 클래스에 생성자가 하나도 없다면 컴파일러는 컴파일 단계에서 자동으로 디폴트 생성자를 추가해서 사용하게 된다. 만약 하나라도 생성자가 구현되어 있다면 생성하지 않는다.

 

 

디폴트 생성자 확인

위 캡처를 보시면 target 디렉터리 아래에 Person 클래스에 public Person() {} 메서드가 있는 것을 확인할 수 있다.

이게 바로 디폴트 생성자다. 나는 선언한 적이 없지만 컴파일러가 자동으로 내가 아무런 생성자를 작성하지 않았기 때문에 만든 것이다. 

그럼 이제 우리는 생성자를 이용해서 객체에 초기화할 때 이름을 강제화해서 누가 밥을 먹었는지 확인해보도록 하겠다.

 

Person 객체에 생성자 생성

생성자의 규칙은

1. 클래스명과 메서드명이 동일해야 한다.

2. 리턴 타입을 정의하지 않는다.

 

위에 this라는 키워드가 보일 것이다. this와 생성자는 떨어질 수 없는 둘도 없는 친구이다.

this는 참조 변수로 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수이다.

이러한 this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다.

 

 

이제 생성자를 이용해서 name을 넣을 것을 강제화했기 때문에 에러 메시지가 출력되는 것을 확인할 수 있다.

 

4. 생성자를 이용한 이름 초기화 설정

 

캡처4 결과 값

객체를 생성할 때 이름을 넣도록 강제화하였고, 이제 실행하면 위와 같이 누가 밥을 먹었는지 알 수 있게 되었다.

 

  클래스내부 동일패키지 상속받은클래스 이외의 영역
private o x x x
default o o x x
protected o o o x
public o o o o

접근제어 지시자 표이다. 표와 같이 접근제어 지시자를 이용해서 해당 클래스나 메서드들을 접근할 수 있는 범위를 제한할 수 있다.

 

 


 

 

 

참조

wikidocs.net/281

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

www.tcpschool.com/java/java_methodConstructor_this

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

728x90
반응형
반응형

목표

자바가 제공하는 제어문을 학습하세요.

 

학습할 것

- 선택문

- 반복문

 


선택문

- if문, switch문

 

if문

어떤 결과 값이 출력될까요?? ㅎㅎ

 

정답은 '숫자가 10 이상입니다.' 입니다~

 

if 문은 명령문 블록의 실행 여부를 결정하는데 사용됩니다.

첫 번째 조건절에서 'num < 5'라는 조건절에 num은 10이기 때문에 건너뛰고, 다음 조건절에서도 9 이상이기 때문에 건너 뛰어서 위의 조건절을 모두 만족하지 않으면 마지막 else 조건절을 실행시키게 됩니다. 

 

switch문 

어떤 결과 값이 출력될까요?? ㅎㅎ

 

정답은 'num은 3입니다.' 

          'num은 4입니다.'

 

swtich 문은 입력 변수 값과 일치하는 입력값이 있다면 해당 case 문 하위의 문장을 실행합니다. 

혹시 'num은 3입니다.'라고 생각하신 분이 계신가요? 

swtich 문은 해당 case 문을 실행한 뒤 break 문이 있어야지 빠져나갑니다.

만약 break 문이 빠져 있다면 다음 case 문을 실행하게 됩니다.

마지막으로 default 같은 경우는 case의 값이 아닌 다른 값이 저장되어 있다면 default 문장을 실행합니다.

 

반복문

- for문, for each문, while문, do while문

- for 문 같은 경우는 반복 횟수가 정해져 있을 때 사용하고, while 문 같은 경우는 반복 횟수가 정해져 있지 않을 때 사용하면 유용합니다.

for문

어떤 결과 값이 출력될까요?? ㅎㅎ

 

정답은 1월부터 12월까지 순서대로 출력하게 됩니다.

 

for 문의 기본 구성은 (초기값; 조건문; 증가치) 로 구성되어 있습니다.

위의 문제를 예로 들면 i가 조건문 12이하 일동안 증가시키며 반복 수행을 합니다.  

 

for each문

for each는 J2SE 5.0부터 추가되었습니다. for each라는 키워드가 따로 있는 것은 아니고 동일한 for 문이지만 사용하는 구조가 조금 다릅니다. 

배열 형태로 저장되어 있는 과일들을 하나씩 출력하는 소스코드입니다.

for each 문인 경우 증감 연산자가 필요하지 않고, 배열 형태의 값을 꺼낼 때 아주 유용할 것 같습니다.

 

while문

위의 for 문과 같이 1월부터 12월까지 순서대로 출력하게 됩니다.

 

while 문은 조건문이 참인 동안 계속해서 안의 내용을 수행하게 됩니다.

조건문이 참인 경우에도 빠져나가고 싶을 경우에는 아래와 같이 break 문을 이용하실 수 있습니다.

while 문에서 break 사용

 

 

while 문에서 continue 사용 

위와 같이 continue을 사용해서 홀수 월만 출력할 수 있습니다.

continue를 만나게 되면 while 문의 맨 처음 조건문으로 돌아가게 됩니다.

 

do while문

일반적으로 while 문은 조건식이 참일 경우 코드가 실행되는 반면에, do while 문은 무조건 한번 이상 실행하게 됩니다.

 


과제 (옵션)

과제 0. JUnit 5 학습하세요.

과제 1. live-study 대시 보드를 만드는 코드를 작성하세요.

  •  깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것.
  •  참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것.
  •  Github 자바 라이브러리를 사용하면 편리합니다.
  •  깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수  있습니다.

 

아직 많이 부족하지만 java api 문서 읽는 방법을 조금이나마 학습할 수 있는 시간이었습니다. 

GitHub API를 이용해서 과제를 진행하다 보니 보다 즐겁게 할 수 있었습니다.

 

과제 2. LinkedList를 구현하세요.

과제 3. Stack을 구현하세요.

과제 4. 앞서 만든 ListNode를 사용해서 Stack을 구현하세요.

과제 5. Queue를 구현하세요.

 

모든 과제를 수행하지 못했습니다... 꼭 작성하자..

 

728x90
반응형

+ Recent posts