본문 바로가기

programming/Gukbi

국비 교육 12일차 - Class 변수

728x90
반응형

오늘은 Method 다음 Class의 개념과 class에서 쓰이는 변수들의 특징에 대해 배웠다. 

우선 class를 사용하여 여러 변수, method를 묶어주는것 부터 객체지향 프로그래밍의 시작이라고 보면 될 것 같다. 

 

객체지향 프로그래밍을 하는 이유는 

1. 관리가 용이해서

2. 수정(변경)이 편해서

3. 재사용성이 높아서

4. 신뢰성이 높아서

 

등의 이유가 있었다. 

 /*	
 * 	=================
 * 	1. 관리가 용이
 * 	2. 수정(변경)이 편하다
 * 	3. 재사용이 좋다
 * 	4. 신뢰성이 좋다
 *  =================
 *  
 *  
 *  class의 구성요소(변수+메소드)
 *  =============
 *  = 변수
 *  
 *  		프로그래머가 직접 생성 => class {}안에 생성
 *  	====================================================
 *  	= 멤버변수 (인스턴스변수) : new를 사용시마다 따로 메모리 만들어진다
 *  	= 공통변수, 공유변수 : JVM에서 자동으로 생성되는 변수(앞에 static)
 *  	====================================================
 *  	= 지역변수 : 메소드안에서만 사용
 *  				for(int i =0~) ===> 메소드가 종료하면 자동으로 사라지는 변수
 *  				=> 메모리 자체에서 관리 {}이 끝나면 자동으로 사라진다
 *  = 메소드 : 멤버변수를 이용해서 기능을 설정
 *  = 생성자 : 멤버변수에 대한 초기화를 담당
 *  
 *  여러개의 데이터를 모아서 처리 (클래스)
 *  저장하는 방법
 *   클래스명 변수명=new 클래스명();
 *  데이터를 읽어오는 방법
 *   변수명.변수, 클래스명.변수 => static
 *   ========
 *   인스턴스변수
 *   ==============================================
 *   예) 
 *   	Tv t; ==> {데이터 channel}
 *   	====t====
 *   	==> 전체를 모은 메모리 주소 100
 *   	=========
 *   	t=new TV();
 *   		========100=======
 *   		------channel-----
 *       			 0			===> 100 -> channel ===> t.channel
 *       	------------------
 *       	==================
 *       
 *       TV t1=new TV();
 *       ==		   ==
 *       ====t1====
 *       	200 	====> t1.channel
 *       				  ==
 *       				  주소명 (메모리 => 주소, 번지) 0~
 *       ==========
 *       				======= 200 ======
 *       				------channel-----
 *       			 			 0			===> 200 -> channel ===> t.channel
 *       				------------------
 *       				==================
 *   
 *   class A
 *   {
 *   	int a=100;
 *   	void display()
 *   	{
 *   		int b=10; // 지역변수
 *   		if(b==10)
 *   		{
 *   			int c=100; // 지역변수
 *   		}//c변수 사용영역
 *   	} // b변수 사용영역
 *   	void display2(int d)
 *   	{
 *   		int e=10;
 *   		
 *   		// d,e,a ==> 매개변수
 *   	}
 *   	void display3()
 *   	{
 *   		int a=10;
 *   		System.out.println("a="+a); // 10
 *   								this.a -> class에 있는 변수를 가르키는 것. (지역변수 a가 아니라 class에 있는 a)
 *  	}
 *   
 *   } // a변수는 사용
 *   
 *   
 */
// public으로 시작하는 클래스는 반드시 1개만 사용 (저장명은 반드시 public class로 시작하는 클래스명이 저장)

객체의 사전적 뜻은 '실재로 존재하는 것' 

즉 프로그래밍에서는 클래스에 정의된 내용대로 [메모리에 생성된 것]을 뜻한다. 

 

예를 들어 TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다. 

 

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다. 

 

클래스 ---> (인스턴스화) ---> 인스턴스(객체)

책 보고 이해하고 정리한 내용

 

아래는 클래스에서 인스턴스를 생성하고, 참조변수들을 통해 멤버변수들을 저장해준 예제이다. 

참조변수=a, 멤버변수=1712, "시크제노맘" 등등

public class 쉐프 {

	static String site="만개의 레시피";
	int ranking;
	String chefName;
	int recipeCount;
	int clip;
	int view;
	int follower;
	// 21,771 => String => int => , => ""
	public static void main(String[] args) {
		쉐프 a = new 쉐프();
		a.ranking=1;
		a.chefName="시크제노맘";
		a.recipeCount=1712;
		a.clip=1027593;
		a.view=33561876;
		a.follower=21771;
		
		쉐프 a1=new 쉐프();
		a1.ranking=2;
		a1.chefName="큐티인준맘";
		a1.recipeCount=249;
		a1.clip=603334;
		a1.view=12912223;
		a1.follower=15335;
		
		
		System.out.println("====="+a.site+"의 쉐프 "+a.chefName+"======");
		System.out.println("랭킹:"+a.ranking+"위");
		System.out.println("레시피 수:"+a.recipeCount);
		System.out.println("클립 수:"+a.clip);
		System.out.println("뷰 수:"+a.view+"view");
		System.out.println("팔로워 수:"+a.follower+"명");
		
		System.out.println("====="+a1.site+"의 쉐프 "+a1.chefName+"======");
		System.out.println("랭킹:"+a1.ranking+"위");
		System.out.println("레시피 수:"+a1.recipeCount);
		System.out.println("클립 수:"+a1.clip);
		System.out.println("뷰 수:"+a1.view+"view");
		System.out.println("팔로워 수:"+a1.follower+"명");	

	}

}

어떤 변수를 전역에서 쓰는 static 변수로 써야할지, 어떤 변수들은 지역변수로 메소드 안에서 호출하고 버려야할지와 같은 것들을 잘 생각하면서 변수 선언을 해줘야 한다. 

 

 

 

오늘은 변수 선언만 배워서 아마 내일 더 복잡한 메소드를 배울 예정이다

조금 긴장된다

 

 

 

728x90
반응형