[목차]
01. 객체 주소 생성 과정
💡
클래스를 통해서 객체를 생성하면 주소가 생기고,
주소내에 데이터 영역과 메서드 영역이 존재하는데,
데이터 영역의 값을 세팅하려면 생성된 주소내에
데이터 영역에 값을 할당해주고,
값을 찾으려면 다시 주소를 찾고,
데이터 영역의 값을 찾아서 응용한다.
02. 클래스와 객체, 전역변수 값(1)
1) 객체 생성 방법 (회원관리)
👉🏻User u01 = new User();- User 클래스 데이터 타입인 u01 객체참조변수를 선언하고, User()생성자 메서드를 호출해서 새로운 객체를 생성하고, 새로운 주소가 생성되는 곳엔 데이터영역과 메서드 영역이 존재하며, 생성된 주소값을 u01 객체참조변수에 할당한다.
2) 전역변수 값 셋팅 방법 (회원관리)
👉🏻u01.uid = “id001”; u01.upw = “pw001”; …- u01 객체참조변수에 할당된 객체의 주소값을 찾아가서 해당 전역변수에 값들을 대입한다.
3) 전역변수 값 겟팅 방법 (회원관리)
👉🏻public static void uPrint(User getu) { System.out.println(getu.전역변수); … }- getu객체참조변수에 할당된 주소 즉, User 클래스를 통해 생성된 객체를 찾아가서 전역변수에 담겨있는 값들을 겟팅해서 콘솔에 출력한다.
[코드예제] User.java (main 메서드를 포함하지 않는 클래스)
package kr.or.ksmart.a; public class User { // 전역변수(global variable) = 필드(field) // 유사용어 : 프로퍼티(property) // 클래스 블록 안쪽, 메서드 블록 밖에 선언된 변수는 // 클래스 블록 내에서 모두 사용 가능한 변수 String uid; String upw; String uphone; char ugender; int uage; String ulevel; // default 생성자 메서드 선언 // default 생성자 메서드만 필요한 경우 생략 가능 public User() { } // 중괄호 블록 밖에 선언된 변수 : 안쪽에서 사용 가능 // 중괄호 블록 안쪽에 선언된 변수 : 밖에서 사용 불가능 // 지역변수(local variable) : 메서드 내에서 사용 // 호출되면 살아 있다가 휘발된다. }
[코드예제] AA01.java (main 메서드를 포함한 클래스)
package kr.or.ksmart.a; //실행은 main 메서드 포함된 클래스 public class AA01 { public static void main(String[] args) { // TODO Auto-generated method stub User u01 = new User(); User u02 = new User(); System.out.println(u01 + "<-u01"); // id001 pw001 010-0001 남 20 구매자 u01.uid = "id001"; u01.upw = "pw001"; u01.uphone = "010-0001"; u01.ugender = '남'; u01.uage = 20; u01.ulevel = "구매자"; uPrint(u01); // id002 pw002 010-0002 여 30 판매자 u02.uid = "id002"; u02.upw = "pw002"; u02.uphone = "010-0002"; u02.ugender = '여'; u02.uage = 30; u02.ulevel = "판매자"; uPrint(u02); // User getu = kr.or.ksmart.a.User@1c4af82c; public static void uPrint(User getu) { System.out.println("--- 회원 출력 시작 ---"); System.out.println("아이디 : " + getu.uid); System.out.println("비번 : " + getu.upw); System.out.println("휴대폰 : " + getu.uphone); System.out.println("성별 : " + getu.ugender); System.out.println("나이 : " + getu.uage); System.out.println("권한 : " + getu.ulevel); System.out.println("--- 회원 출력 끝 ---"); } }
03. 클래스와 객체, 전역변수 값(2)
객체 생성 방법 (상품관리)
👉🏻Goods g01 = new Goods();- Goods 클래스 데이터 타입인 g01 객체참조변수를 선언하고, Goods()생성자 메서드를 호출해서 새로운 객체를 생성하고, 새로운 주소가 생성되는 곳엔 데이터영역과 메서드 영역이 생긴다. 생성된 주소값을 g01 객체참조변수에 할당한다.
전역변수 값 셋팅 방법 (상품관리)
👉🏻g01.pcode = “p001”; g01.uid = u01.uid; …- g01 객체참조변수에 할당된 객체의 주소값을 찾아가서 해당 전역변수에 값들을 대입한다.
- u01 객체참조변수에 할당된 주소를 찾아가서 즉, User 클래스를 통해 생성된 객체인 회원주소의 전역변수인 uid의 값을 가져온다.
- g01 객체참조변수에 할당된 객체의 주소값을 찾아가서 즉, Goods 클래스를 통해 생성된 객체인 상품주소의 전역변수인 uid의 값에 대입한다.
전역변수 값 겟팅 방법 (상품관리)
👉🏻public static void gPrint(Goods getg) { System.out.println(getg.전역변수); … }- getg객체참조변수에 할당된 주소 즉, Goods 클래스를 통해 생성된 객체를 찾아가서 전역변수에 담겨있는 값들을 겟팅해서 콘솔에 출력한다.
[코드예제] Goods.java (main 메서드를 포함하지 않는 클래스)
package kr.or.ksmart.a; public class Goods { String pcode; String uid; String pname; int pjungsang; int phalin; String psangse; }
[코드예제] AA01.java (main 메서드를 포함한 클래스)
package kr.or.ksmart.a; //실행은 main 메서드 포함된 클래스 public class AA01 { public static void main(String[] args) { Goods g01 = new Goods(); Goods g02 = new Goods(); System.out.println(u01 + "<-u01"); // p001 id002 노트북 2000000 1000000 SW개발용 g01.pcode = "p001"; g01.uid = u02.uid; g01.pname = "노트북"; g01.pjungsang = 2000000; g01.phalin = 1000000; g01.psangse = "SW개발용"; gPrint(g01); // p002 id003 선풍기 50000 40000 시원해 g02.pcode = "p002"; g02.uid = "id003"; g02.pname = "선풍기"; g02.pjungsang = 50000; g02.phalin = 40000; g02.psangse = "시원해"; gPrint(g02); } public static void gPrint(Goods getg) { System.out.println("--- 상품 출력 시작 ---"); System.out.println("상품코드 : " + getg.pcode); System.out.println("판매자아이디 : " + getg.uid); System.out.println("상품이름 : " + getg.pname); System.out.println("정상가격 : " + getg.pjungsang); System.out.println("할인가격 : " + getg.phalin); System.out.println("상세설명 : " + getg.psangse); System.out.println("--- 상품 출력 끝 ---"); } }
04. 클래스와 객체, 전역변수 값(3)
객체 생성 방법 (주문관리)
👉🏻Order o01 = new Order();- Goods 클래스 데이터 타입인 o01 객체참조변수를 선언하고, Goods() 생성자 메서드를 호출해서 새로운 객체를 생성하고, 새로운 주소가 생성되는 곳엔 데이터 영역과 메서드 영역이 존재하고, 생성된 주소값을 o01 객체참조변수에 할당한다.
전역변수 값 셋팅 방법 (주문관리)
👉🏻o01.ocode = “o001”; o01.pcode = g01.pcode; …- o01 객체참조변수에 할당된 객체의 주소값을 찾아가서 해당 전역변수에 값들을 대입한다.
- g01 객체참조변수에 할당된 객체의 주소값을 찾아가서 즉, Goods 클래스를 통해 생성된 객체의 상품주소의 전역변수 pcode의 값을 가져온다.
- o01 객체참조변수에 할당된 객체의 주소값을 찾아가서 해당 전역변수에 값들은 대입한다.
전역변수 값 겟팅 방법 (주문관리)
👉🏻public static void oPrint(Order geto) { System.out.println(geto.전역변수); … }- geto 객체참조변수에 할당된 주소 즉, Order 클래스를 통해 생성된 객체를 찾아가서 전역변수에 담겨있는 값들을 겟팅해서 콘솔에 출력한다.
[코드예제] Order.java (main 메서드를 포함하지 않는 클래스)
package kr.or.ksmart.a; public class Order { String ocode; String pcode; String uid; int ocount; int oprice; int ototal; String oaddress; }
[코드예제] AA01.java (main 메서드를 포함한 클래스)
package kr.or.ksmart.a; //실행은 main 메서드 포함된 클래스 public class AA01 { public static void main(String[] args) { // TODO Auto-generated method stub User u01 = new User(); User u02 = new User(); Goods g01 = new Goods(); Goods g02 = new Goods(); Order o01 = new Order(); System.out.println(u01 + "<-u01"); // id001 pw001 010-0001 남 20 구매자 u01.uid = "id001"; u01.upw = "pw001"; u01.uphone = "010-0001"; u01.ugender = '남'; u01.uage = 20; u01.ulevel = "구매자"; uPrint(u01); // id002 pw002 010-0002 여 30 판매자 u02.uid = "id002"; u02.upw = "pw002"; u02.uphone = "010-0002"; u02.ugender = '여'; u02.uage = 30; u02.ulevel = "판매자"; uPrint(u02); // p001 id002 노트북 2000000 1000000 SW개발용 g01.pcode = "p001"; g01.uid = u02.uid; g01.pname = "노트북"; g01.pjungsang = 2000000; g01.phalin = 1000000; g01.psangse = "SW개발용"; gPrint(g01); // p002 id003 선풍기 50000 40000 시원해 g02.pcode = "p002"; g02.uid = "id003"; g02.pname = "선풍기"; g02.pjungsang = 50000; g02.phalin = 40000; g02.psangse = "시원해"; gPrint(g02); // o001 p001 id001 3 2000000 6000000 금암동 o01.ocode = "o001"; o01.pcode = g01.pcode; o01.uid = u01.uid; o01.ocount = 3; o01.oprice = 2000000; o01.ototal = o01.ocount * o01.oprice; o01.oaddress = "금암동"; oPrint(o01); } public static void oPrint(Order geto) { System.out.println("--- 주문 출력 시작 ---"); System.out.println("주문 코드 : " + geto.ocode); System.out.println("상품 코드 : " + geto.pcode); System.out.println("구매자 아이디 : " + geto.uid); System.out.println("주문 수량 : " + geto.ocount); System.out.println("주문 단가 : " + geto.oprice); System.out.println("주문 합계 : " + geto.ototal); System.out.println("배송 주소 : " + geto.oaddress); System.out.println("--- 주문 출력 끝 ---"); } public static void gPrint(Goods getg) { System.out.println("--- 상품 출력 시작 ---"); System.out.println("상품코드 : " + getg.pcode); System.out.println("판매자아이디 : " + getg.uid); System.out.println("상품이름 : " + getg.pname); System.out.println("정상가격 : " + getg.pjungsang); System.out.println("할인가격 : " + getg.phalin); System.out.println("상세설명 : " + getg.psangse); System.out.println("--- 상품 출력 끝 ---"); } // User getu = kr.or.ksmart.a.User@1c4af82c; public static void uPrint(User getu) { System.out.println("--- 회원 출력 시작 ---"); System.out.println("아이디 : " + getu.uid); System.out.println("비번 : " + getu.upw); System.out.println("휴대폰 : " + getu.uphone); System.out.println("성별 : " + getu.ugender); System.out.println("나이 : " + getu.uage); System.out.println("권한 : " + getu.ulevel); System.out.println("--- 회원 출력 끝 ---"); } }
tag : #JAVA #클래스 #객체 #전역변수 #셋팅 #겟팅
Uploaded by N2T