Cute Blinking Unicorn

백엔드/JAVA

클래스의 정의(2)- 사용자 정의 타입 171페이지

민밥통 2023. 10. 19. 14:32
package myproject;

public class Ex169p {

	public static void main(String[] args) {
		Tv t;                 // Tv인스턴스를 참조하기 위한 변수 t를 선언 참조변수
		t = new Tv();         // Tv인스턴스를 생성한다. 생성자 함수.
		t.channel = 7;        // Tv인스턴스의 멤버변수 channe1의 값을 7로 한다.
		t.channelDown();      // Tv인스턴스의 메서드 channe1Down()을 호출한다.
		System.out.println("현재 채널은" + t.channel + " 입니다.");
		
		t.print();  // Tv인스턴스의 메서드 print()을 호출한다.
		int a; //값을 안줘서 보장할 수 없어. 값을 안줬더니 에러가 떠 그래서 지역변수는 초기화가 안됨
//		System.out.println(a);
		
		Tv[] tvArr = new Tv[3];
		tvArr[0] = new Tv();
		tvArr[1] = new Tv();
		tvArr[2] = new Tv();
		
		tvArr[0].color = "red";
		tvArr[1].color = "green";
		tvArr[2].color = "blue";
		
		for (int i = 0; i < tvArr.length; i++) {
			System.out.println("\n" + i +"의 "+"tv색은? : "+  tvArr[i].color);
		}
			System.out.println(tvArr); //배열의 시작 주소
			System.out.println(tvArr[0]); // 배열[0]이 갖고 있는 참조하는 주소
			System.out.println(tvArr[1]); 
			System.out.println(tvArr[2]); 

	} //main
}//class

class Tv { 
	// Tv의 속성 (멤버변수)  멤버 변수는 값을 안 줬음에도 나옴 그래서 자동 초기화 된다.
	String color;           // 색상 
	boolean power;         	// 전원상태(on/off) 
	int channel;           	// 채널

	//setter, getter
	void setColor(String clor){ //color멤버변수에 인수값을 저장함 (구별해야됨) 
		//void 는 회피하는 것 없는 거 . 애는 다른 곳에 전달하는 게 아니라는 의미 (다른 곳에 퍼다주는게 아니라고 외부에서 받아가지고 세팅만 해주는 애랑 밖으로 돌려주는 값이 없다)
		this.color = color; //void: 외부에 반환하는 값이 없음을 의미함
	}
	String getColor(){ //외부에 돌려주는 값은 String형임
		return color; //컬러는 String이다. 스트링을 난 갖고 나간다. (String인 color를 반환함)
	}
	// Tv의 기능 (메서드)
	void power()   { power = !power; }  // TV를 켜거나 끄는 기능을 하는 메서드
	void channelUp()   {  ++channel; }  // TV의 채널을 높이는 기능을 하는 메서드
	void channelDown() { --channel; }   // TV의 채널을 낮추는 기능을 하는 메서드
	void print() {
		System.out.println(color + "," + power + " ," + channel); } }
package myproject;

public class Ex169p {

	public static void main(String[] args) {
		Tv2 t;                 // Tv인스턴스를 참조하기 위한 변수 t를 선언 참조변수
        t = new Tv2();         // Tv인스턴스를 생성한다. 생성자 함수.
        t.channel = 7;        // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
        t.channelDown();      // Tv인스턴스의 메서드 channelDown()을 호출한다.
        System.out.println("현재 채널은 " + t.channel + " 입니다.");

        t.print();  // Tv인스턴스의 메서드 print()을 호출한다.
        int a;

	      Tv2[] tvarr = new Tv2[3];
	      
	      tvarr[0] = new Tv2();
	      tvarr[1] = new Tv2();
	      tvarr[2] = new Tv2();
	      
	      tvarr[0].color = "red";
	      tvarr[0].color = "green";
	      tvarr[0].color = "blue";
	      
	      for(int i = 0; i < tvarr.length; i++)
	         System.out.println(tvarr[i].color);
	      System.out.println(tvarr); //배열의 시작 주소
	      System.out.println(tvarr[0]); //배열[0]이 갖고 있는 참조하는 주소
	      System.out.println(tvarr[1]);
	      System.out.println(tvarr[2]);
	      
	      t.setcolor("red");
	      System.out.println(t.getcolor());
	      
	      t.setchannel(-55);
	      System.out.println(t.getChannel());
	}
}

class Tv2 {
    // Tv의 속성 (멤버변수)  멤버 변수는 값을 안 줬음에도 나옴 그래서 자동 초기화 된다.
		String color;           // 색상 
		   boolean power;            // 전원상태(on/off) 
		   int channel;              // 채널 

		   //setter,getter
		   void setcolor(String color){ //color멤버 변수에 인수값을 저장함
		      this.color = color; //void: 외부에 반환하는 값이 없음을 의미함.
		   }
		   String getcolor(){ //외부에 돌려주는 값은 string형임. 
		      return color; //color을 반환함, string형
		   }
		   
		   void setchannel(int ch) { //ch의 범위를 확인해야 함: 채널수는 1~100이다.
		      if(ch >= 1 && ch <= 100)
		      channel = ch;
		      else
		         System.out.println("범위를 벗어났습니다. (유효한 수: 1~100)");
		   }
		   int getChannel() {
		      return channel; 
		   }
		   
		   // Tv의 기능(메서드) 
		   void power()   { power = !power; }  // TV를 켜거나 끄는 기능을 하는 메서드  
		   void channelUp()   {  ++channel; }  // TV의 채널을 높이는 기능을 하는 메서드 
		   void channelDown() { --channel; }   // TV의 채널을 낮추는 기능을 하는 메서드  
		   void print() {
		      System.out.println(color + "," + power + "," + channel);
		   }


		}

교수님께서 작성하신 코드

package myproject;

public class Ex6_1 {


	public static void main(String[] args) {
		//객체가 없어도 클래스 static변수 출력
		Tv.countTv = 100;
		System.out.println("객체 생성 전 ->" + Tv.countTv);
		
		Tv t;                 // Tv인스턴스를 참조하기 위한 변수 t를 선언       
		t = new Tv();         // Tv인스턴스를 생성한다. 
		t.channel = 7;        // Tv인스턴스의 멤버변수 channel의 값을 7로 한다. 
		t.channelDown();      // Tv인스턴스의 메서드 channelDown()을 호출한다. 
		System.out.println("현재 채널은 " + t.channel + " 입니다.");
		
		t.print();
		int a; //
		//System.out.println(a);
		//객체배열
		Tv[] tvarr=new Tv[3];
		
		tvarr[0] = new Tv(); 
		tvarr[1] = new Tv();
		tvarr[2] = new Tv();
		
		tvarr[0].color ="red";
		tvarr[1].color ="green";
		tvarr[2].color ="blue";
		
		for(int i = 0; i < tvarr.length; i++)
			System.out.println(tvarr[i].color);
		System.out.println(tvarr); //배열의 시작 주소
		System.out.println(tvarr[0]); //배열[0]이 갖고 있는 참조하는 주소
		System.out.println(tvarr[1]);
		System.out.println(tvarr[2]);
		
		t.setColor("RED");
		System.out.println(t.getColor());	
		t.setChannel(-55);
		System.out.println(t.getChannel());
		
		//static변수 출력
		System.out.println("인스턴스 수-> " + t.getCountTv());		
		
	}//main
}//class

class Tv { 
	// Tv의 속성(멤버변수)   
	String color;           // 색상 
	boolean power;         	// 전원상태(on/off) 
	int channel;     		// 채널
	
	//정적static 변수 테스트
	static int countTv = 0; // 클래스 변수
	
	int getCountTv() {
		return countTv;
	}
	//생성자 함수: default constructor
	Tv(){
		System.out.println("안녕하세요? 객체를 만듭니다.~~");
		countTv++;
	}
	
	//setter, getter
	void setColor(String color){ //color멤버변수에 인수값을 저장함
		this.color = color;	//void: 외부에 반환하는 값이 없음을 의미함
	}
	
	String getColor(){ //외부에 돌려주는 값은 String형임
		return color; //color을 반환함, String형
	}
	
	void setChannel(int ch) {//ch의 범위를 확인해야 함: 채널수는 1-100이다.
		if(ch >= 1 && ch <=100)
			channel = ch;
		else
			System.out.println("범위를 벗어 났음: 1-100");
	}
	int getChannel() {
		return channel;
	}

	// Tv의 기능(메서드) 
	void power()   { power = !power; }  // TV를 켜거나 끄는 기능을 하는 메서드  
	void channelUp()   {  ++channel; }  // TV의 채널을 높이는 기능을 하는 메서드 
	void channelDown() { --channel; }   // TV의 채널을 낮추는 기능을 하는 메서드
	void print() {//멤버 변수: 기본값으로 초기화됨
		System.out.println(color + ","+ power + "," + channel);
	}
}