2021. 03. 30(화) TIL

Dylan·2021년 3월 30일
0

Java

클레스

클래스란

  • 클래스는 객체를 생성하기 위한 설계도다.
  • 하나의 클래스로 여러 개의 클래스를 생성할 수 있다.
  • 클래스는 구성요소는 필드, 생성자, 메소드다.

클래스의 구성요소

  • 필드(Field)
    • 객체의 고유 데이터, 현재 상태정보, 부품객체를 저장하는 곳이다.
    • 객체의 고유한 속성을 나타낸다.
    • 변수와 비슷한 형태로 정의한다.
    • 필드는 초기화값을 지정하지 않는 경우 해당 테이터타입의 기본값으로 초기화된다.
    • 필드는 생성자와 메소드 전체에서 사용가능하다.
    • 객체 소멸되지 않는 한 객체와 함께 유지된다.
  • 생성자(Constructor)
    • new 연산자로 호출되는 특별한 메소드다.
    • 객체 생성시 초기화를 담당한다.
    • 반드시 클래스의 이름과 동일한 이름을 가지고, 반환타입이 없다.
    • 객체 생성할 때만 호출할 수 있다.
  • 메소드(Method)
    • 이름을 가진 수행문의 블록이다.
    • 객체의 고유한 기능을 담당한다.
    • 수행문의 블록은 이름을 가지고 있으며, 이것을 메소드이름이라고 한다.
    • 메소드를 호출하면 블록내의 모든 수행문이 수행된다.
    • 메소드는 필드의 값을 조회하고, 수정할 수 있다.
    • 메소드는 고유한 기능(업무로직) 수행에 필요한 수행문을 포함하고 있다.
    • 메소드는 객체들끼리 메세지를 주고받는 용도로 사용된다.
    • 메소드는 호출하는 측으로부터 데이터를 전달받을 수 있고, 실행 후 결과값을 호출하는 측에게 제공할 수 있다.
    • 메소드의 구성은 선언부구현부로 구성되어 있다
    • 메소드 선언부
      • 반환타입(Return Type)
        • 메소드 수행결과(출력)인 반환값 대한 데이터타입을 적는다.
        • 반환값이 없는 경우 반환타입은 void를 적는다.
        • 메소드는 오직 한 종류의 값만 반환할 수 있다.
        • 메소드의 반환타입이 void가 아닌 경우, 구현부안에는 return 반환값구문이 반드시 포함되어 있어야 한다.
        • return 문은 구현부(구현부 내의 수행문을 실행한)실행한 결과로 획득된 값을 호출한 측에게 반환값으로 전달하는 수행문이다.
        • return 문이 반환하는 반환값의 타입은 메소드 선언부의 반환타입일치해야 한다.
      • 메소드이름
        • 수행문을 포함하고 있는 코드블록의 이름이다.
        • 그 메소드가 수행하는 작업을 잘 나타내는 이름으로 적는다.
        • 메소드명은 보통 동사형이다.
      • 매개변수(Parameter)
        • 매개변수는 메소드가 작업을 수행하는데 필요한 값들(입력값)을 제공받기 위한 변수다.
        • 매개변수는 필요한 값의 개수만큼 변수를 선언해야 하며, 각 변수들은 ,로 구분된다.
        • 매개변수의 타입이 같아도 변수의 타입을 생략할 수 없다.
            int add(int x, int y) { ... } // OK
            int add(int x, y) { ... } // 에러, 매개변수 y의 타입이 정의되지 않았음
    • 메소드 구현부
    • 메소드를 호출했을 때 수행할 수행문을 포함하는 부분이다.
    • 수행문이 하나도 없는 구현부도 가능하다.
    • 메소드 선언부의 반환타입이 void가 아닌 경우 구현부 안에는 반드시 return 키워드를 사용해서 값을 반환하는 수행문이 존재해야 한다.

메소드

  • 메소드는 이름있는 코드 블록이다.
  • 메소드는 객체의 구성요소 중 기능을 담당한다.
  • 메소드는 선언부와 구현부로 구성된다.
  • 메소드의 선언부는 접근제한자 반환타입 메소드이름(타입 매개변수명, 타입 매개변수명, ...) 으로 구성된다.
  • 메소드의 구현부는 해당 메소드가 수행하는 작업에 대한 수행문이 포함되어 있다.

메소드의 매개변수(Parameter)

  • 매개변수는 메소드가 작업을 수행하는데 필요한 입력값을 저장하기 위한 변수다.
  • 매개변수는 0개 이상 정의할 수 있다.
  • 매개변수의 타입은 기본자료형(정수, 실수, 불린, 문자)과 참조자료형(문자열, 배열, 객체)이 모두 가능하다.
  • 메소드를 호출하는 측에서는 반드시 매개변수에 맞게 인자(Argument)값을 전달해야 한다.
package day2;

/**
 * Tv관련 기능을 제공하는 클래스다.
 * @author 홍길동
 * @version 0.1
 * @since 2021-03-30
 *
 */
public class Tv {
	// private 접근제한자는 멤버변수를 은닉화시킨다.
	private int channel = 10;
	private boolean power;
	
	// tv를 킨다
	// power의 값을 true로 설정한다
	// 변경작업 - 반환타입: void
	// 매개변수 - 필요없음
	/**
	 * Tv 객체의 power상태를 true로 설정한다
	 */
	public void on() {
		// Tv객체의 전원상태를 true로 설정한다
		power = true;
	}
	
	// tv를 끈다
	// power의 값을 false로 설정한다
	// 변경작업 - 반환타입: void
	// 매개변수 - 필요없음
	/**
	 * Tv 객체의 power상태를 false로 설정한다
	 */
	public void off() {
		// Tv객체의 전원상태를 false로 설정한다
		power = false;
	}
	
	// 채널숫자를 1 감소시킨다.
	// 변경작업 - 반환타입 : void
	// 매개변수 - 필요없음
	/**
	 * Tv 객체의 채널번호를 1감소시킨다.
	 */
	public void channelDown() {
		channel--;
	}
	
	// 채널숫자를 1 증가시킨다.
	// 변경작업 - 반환타입 : void
	// 매개변수 - 필요없음
	/**
	 * Tv 객체의 채널번호를 1증가시킨다.
	 */
	public void channelUp() {
		channel++;
	}
	
	// **채널로 변경한다
	// 변경작업 - 반환타입 : void
	// 매개변수 - 채널번호(정수)
	/**
	 * 채널번호를 전달받아서 Tv객체의 채널번호를 변경한다.
	 * @param channelNumber 변경할 채널번호
	 */
	public void changeChannel(int channelNumber) {
		// Tv객체의 채널 번호에 전달받은 채널번호를 대입한다.
		if (channelNumber >= 1 && channelNumber <= 100) {
			channel = channelNumber;
		}
	}
	
	// 현재 시청중인 채널번호를 조회한다.
	// 조회작업 - 반환타입 : 채널번호(정수)
	// 매개변수 - 필요없음
	/**
	 * Tv객체의 현재 채널번호를 반환한다.
	 * @return 현재 채널번호(1 ~ 100 사이의 정수값)
	 */
	public int getCurrentChannel() {
		return channel;
	}
}

package day2;

public class TvApp {
	public static void main(String[] args) {
		// Tv 객체 생성하기
		Tv tv1 = new Tv();
		Tv tv2 = new Tv();
		
		// Tv 객체의 전원 켜기
		tv1.on();
		// Tv 객체의 현재 채널번호 조회하기
		int channelNumber = tv1.getCurrentChannel();
		System.out.println("현재 채널번호 : " + channelNumber);
		// Tv객체의 채널을 하나 증가시키기
		tv1.channelUp();
		tv1.channelUp();
		
		
		
		// Tv객체의 채널을 24번으로 변경하기
		tv1.changeChannel(24);
		channelNumber = tv1.getCurrentChannel();
		System.out.println("현재 채널번호 : " + channelNumber);
		
		// Tv객체의 채널을 -100번으로 변경하기
		tv1.changeChannel(-100);
		// channel은 은닉화되었따.
		// 외부에서 tv객체의  channel, pwer 멤버변수의 값을 직접 변경할수 없게 되었다.
		// tv1.channel = -100;
		channelNumber = tv1.getCurrentChannel();
		System.out.println("현재 채널번호 : " + channelNumber);
		
		tv2.on();
		
	}
}

0개의 댓글