//Google AdSense

wrapper class

- primitive data type들을 객체로 사용 가능하게 해주는 class.
- Wrapper class는 산술 연산을 위해 정의된 클래스가 아니므로, 인스턴스*에 저장된 값을 변경할 수 없다.
- 값을 참조하기 위해 새로운 인스턴스를 생성하고, 생성된 인스턴스의 값만을 참조할 수 있다.

 

primitive data type 과 상응하는 wrapper class

primitive data type   wrapper class
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

 

Boxing 과 Unboxing

Boxing : 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정
Unboxing : 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정

 

 

 

 


* 인스턴스(Instance) : 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.


참고

 

- https://www.w3schools.com/java/java_wrapper_classes.asp

 

Java Wrapper Classes

Java Wrapper Classes Java Wrapper Classes Wrapper classes provide a way to use primitive data types (int, boolean, etc..) as objects. The table below shows the primitive type and the equivalent wrapper class: Primitive Data Type Wrapper Class byte Byte sho

www.w3schools.com

- http://tcpschool.com/java/java_api_wrapper

 

코딩교육 티씨피스쿨

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

tcpschool.com

 

1 - ② - ⑶ 하나의 패키지  서로다른 클래스에서 리턴 있고 입력 없는 메서드 선언 및 호출

서로다른 클래스에서 변수의 접근지정자가 private으로 지정되어 접근 불가할 때
어떻게 변수의 값을 setting / getting 할 수 있을까?
전역변수 하나에 setting method/ getting method를 선언

ex) private String uid;

<setting method>
return data type void
method name setUid
입력개수 1
매개변수 data type String
매개변수 name a
처리 과정 : 입력받은 값을 전역변수uid에 setting

<getting method>
return data type String
method name getUid
입력개수 0
매개변수 data type -
매개변수 name -
처리 과정 : data 영역의 전역변수uid에 담겨있는 값을 리턴

 

 

세팅이 된 모습

 

지역변수 (매개변수) 이름과 전역변수 이름이 같으면 어떻게 될까?

null이 출력된다.

메서드 내부의 지역변수들은 처리 후 데이터가 휘발된다.

 

this.를 붙이면 세팅이 된다.

 

 

1 - ② - ⑷ 하나의 패키지  서로다른 클래스에서 리턴 있고 입력 있는 메서드 선언 및 호출

 

 

package kr.or.ksmart.A;

public class User {
	
	private String uid;
	private String upw;
	private String uphone;
	private char ugender;
	private int uage;
	private String ulevel;
	
	
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
		
	}
	public String getUpw() {
		return upw;
	}
	public void setUpw(String upw) {
		this.upw = upw;
	}
	public String getUphone() {
		return uphone;
	}
	public void setUphone(String uphone) {
		this.uphone = uphone;
	}
	public char getUgender() {
		return ugender;
	}
	public void setUgender(char ugender) {
		this.ugender = ugender;
	}
	public int getUage() {
		return uage;
	}
	public void setUage(int uage) {
		this.uage = uage;
	}
	public String getUlevel() {
		return ulevel;
	}
	public void setUlevel(String ulevel) {
		this.ulevel = ulevel;
	}

	
}

 

package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
				
		User u01 = new User();
		u01.setUid("id001");
		System.out.println(u01.getUid());
		
		u01.setUid("id001");
		u01.setUpw("pw001");
		u01.setUphone("010-001");
		u01.setUgender('남');
		u01.setUage(20);
		u01.setUlevel("구매자");
	
		uPrint(u01);
		
		
	
		User u02 = new User();
		
	
		u02.setUid("id002");
		u02.setUpw ("pw002");
		u02.setUphone ("010-002");
		u02.setUgender ('여');
		u02.setUage (30);
		u02.setUlevel ("판매자");
		
		uPrint(u02);
		
		
		
	
		User u03 = new User();

		
		u03.setUid ("id003");
		u03.setUpw ("pw003");
		u03.setUphone ("010-003");
		u03.setUgender ('여');
		u03.setUage (31);
		u03.setUlevel ("판매자");

		uPrint(u03);

		
	
		User u04 = new User();

		
		u04.setUid ("id004");
		u04.setUpw ("pw004");
		u04.setUphone ("010-004");
		u04.setUgender ('여');
		u04.setUage (32);
		u04.setUlevel ("관리자");

		uPrint(u04);
	

	}
	

	public static void uPrint (User getu){
		System.out.println("--- 회원가입 내역 ---");
		System.out.println(getu+"<-getu");
		System.out.println(getu.getUid() + "<- 아이디");
		System.out.println(getu.getUpw() + "<- 비밀번호");
		System.out.println(getu.getUphone() + "<- 전화번호");
		System.out.println(getu.getUgender() + "<- 성별");
		System.out.println(getu.getUage() + "<- 나이");
		System.out.println(getu.getUlevel() + "<- 권한");
		System.out.println("--- 회원가입 내역 End ---");
		
	}

	
}

흐름

 


 

AA01 Class ← Class 3가지 (User, Goods, Order) 호출

User class code

더보기
package kr.or.ksmart.A;

public class User {
	
	private String uid;
	private String upw;
	private String uphone;
	private char ugender;
	private int uage;
	private String ulevel;
	
	
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
		
	}
	public String getUpw() {
		return upw;
	}
	public void setUpw(String upw) {
		this.upw = upw;
	}
	public String getUphone() {
		return uphone;
	}
	public void setUphone(String uphone) {
		this.uphone = uphone;
	}
	public char getUgender() {
		return ugender;
	}
	public void setUgender(char ugender) {
		this.ugender = ugender;
	}
	public int getUage() {
		return uage;
	}
	public void setUage(int uage) {
		this.uage = uage;
	}
	public String getUlevel() {
		return ulevel;
	}
	public void setUlevel(String ulevel) {
		this.ulevel = ulevel;
	}

	
}

 

Goods class code

더보기
package kr.or.ksmart.A;

public class Goods {

	private String pcode ;
	private String uid;
	private String pname;
	private int pjungsang ;
	private int phalin;
	private String psangse;
	
	public String getPcode() {
		return pcode;
	}
	public void setPcode(String pcode) {
		this.pcode = pcode;
	}
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public String getPname() {
		return pname;
	}
	public void setPname(String pname) {
		this.pname = pname;
	}
	public int getPjungsang() {
		return pjungsang;
	}
	public void setPjungsang(int pjungsang) {
		this.pjungsang = pjungsang;
	}
	public int getPhalin() {
		return phalin;
	}
	public void setPhalin(int phalin) {
		this.phalin = phalin;
	}
	public String getPsangse() {
		return psangse;
	}
	public void setPsangse(String psangse) {
		this.psangse = psangse;
	}
	
	
	
}

Order class code

더보기

 

package kr.or.ksmart.A;

public class Order {
	
	private String ocode;
	private String pcode;
	private String uid;
	private int ocount;
	private int oprice;
	private int ototal;
	private String oaddress;

	public String getOcode() {
		return ocode;
	}
	public void setOcode(String ocode) {
		this.ocode = ocode;
	}
	public String getPcode() {
		return pcode;
	}
	public void setPcode(String pcode) {
		this.pcode = pcode;
	}
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public int getOcount() {
		return ocount;
	}
	public void setOcount(int ocount) {
		this.ocount = ocount;
	}
	public int getOprice() {
		return oprice;
	}
	public void setOprice(int oprice) {
		this.oprice = oprice;
	}
	public int getOtotal() {
		return ototal;
	}
	public void setOtotal(int ototal) {
		this.ototal = ototal;
	}
	public String getOaddress() {
		return oaddress;
	}
	public void setOaddress(String oaddress) {
		this.oaddress = oaddress;
	}
	
	

}

AA01 class code

더보기
package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
				
		User u01 = new User();
		
		u01.setUid("id001");
		u01.setUpw("pw001");
		u01.setUphone("010-001");
		u01.setUgender('남');
		u01.setUage(20);
		u01.setUlevel("구매자");
	
		uPrint(u01);
		
		
	
		User u02 = new User();
		
	
		u02.setUid("id002");
		u02.setUpw ("pw002");
		u02.setUphone ("010-002");
		u02.setUgender ('여');
		u02.setUage (30);
		u02.setUlevel ("판매자");
		
		uPrint(u02);
		
		Goods g01 = new Goods();
		
		System.out.println(g01);
		
		g01.setPcode ("p001");
		g01.setUid (u02.getUid());
		g01.setPname ("노트북");
		g01.setPjungsang (2000000);
		g01.setPhalin (1000000);
		g01.setPsangse ("SW개발용");
		
		gPrint(g01);
		
		
		
		Order o01 =new Order();
		
		System.out.println(o01);
		
		o01.setOcode ("o001");
		o01.setPcode (g01.getPcode());
		o01.setUid (u02.getUid());
		o01.setOcount (3);
		o01.setOprice (g01.getPjungsang());
		o01.setOtotal (o01.getOcount() * o01.getOprice());
		o01.setOaddress ("금암동");
		
		oPrint(o01);
		
		
		
	
		User u03 = new User();

		
		u03.setUid ("id003");
		u03.setUpw ("pw003");
		u03.setUphone ("010-003");
		u03.setUgender ('여');
		u03.setUage (31);
		u03.setUlevel ("판매자");

		uPrint(u03);
		
		Goods g02 = new Goods();
		g02.setPcode ("p002");
		g02.setUid (u03.getUid());
		g02.setPname ("선풍기");
		g02.setPjungsang (50000);
		g02.setPhalin (40000);
		g02.setPsangse ("시원해");
		gPrint(g02);
		
		Order o02 =new Order();
		o02.setOcode("o002");
		o02.setPcode (g02.getPcode());
		o02.setUid (u03.getUid());
		o02.setOcount(5);
		o02.setOprice(g02.getPjungsang());
		o02.setOtotal(o02.getOcount() * o02.getOprice());
		o02.setOaddress ("서신동");
		oPrint(o02);

		
	
		User u04 = new User();

		
		u04.setUid ("id004");
		u04.setUpw ("pw004");
		u04.setUphone ("010-004");
		u04.setUgender ('여');
		u04.setUage (32);
		u04.setUlevel ("관리자");

		uPrint(u04);
		
		Goods g03 = new Goods();
	
		g03.setPcode ("p003");
		g03.setUid (u04.getUid());
		g03.setPname ("사과박스");
		g03.setPjungsang (100000);
		g03.setPhalin (80000);
		g03.setPsangse ("SW개발용");
	
		gPrint(g03);
		
		Order o03 =new Order();
		
		o03.setOcode ("o003");
		o03.setPcode(g03.getPcode());
		o03.setUid(u04.getUid());
		o03.setOcount(2);
		o03.setOprice (g03.getPjungsang());
		o03.setOtotal (o03.getOcount() * o03.getOprice());
		o03.setOaddress("덕진동");
	
		oPrint(o03);
	

	}
	

	public static void uPrint (User getu){
		System.out.println("--- 회원가입 내역 ---");

		System.out.println(getu.getUid() + "<- 아이디");
		System.out.println(getu.getUpw() + "<- 비밀번호");
		System.out.println(getu.getUphone() + "<- 전화번호");
		System.out.println(getu.getUgender() + "<- 성별");
		System.out.println(getu.getUage() + "<- 나이");
		System.out.println(getu.getUlevel() + "<- 권한");
		System.out.println("--- 회원가입 내역 End ---");
		
	}
	
	public static void gPrint (Goods getp) {
		System.out.println("--- 상품관리 내역 ---");

		System.out.println(getp.getPcode());
		System.out.println(getp.getUid());
		System.out.println(getp.getPname());
		System.out.println(getp.getPjungsang());
		System.out.println(getp.getPhalin());
		System.out.println(getp.getPsangse());
		System.out.println("--- 상품관리 내역 End ---");
	}

	public static void oPrint (Order geto) {

		
		System.out.println("--- 주문관리 내역 ---");
		System.out.println(geto.getOcode());
		System.out.println(geto.getPcode());
		System.out.println(geto.getUid());
		System.out.println(geto.getOcount());
		System.out.println(geto.getOprice());
		System.out.println(geto.getOtotal());
		System.out.println(geto.getOaddress());
		System.out.println("--- 주문관리 내역 End ---");
	}
	
}

천방지축 얼렁뚱땅 빙글빙글 돌아가는 흐름 ..

 

응용 - uPrint, pPrint, oPrint를 다른 TatlaPrint class로 분리하여보기

package kr.or.ksmart.A;

public class TotalPrint {
	
	
	public void uPrint (User getu){
		System.out.println("--- 회원가입 내역 ---");

		System.out.println(getu.getUid() + "<- 아이디");
		System.out.println(getu.getUpw() + "<- 비밀번호");
		System.out.println(getu.getUphone() + "<- 전화번호");
		System.out.println(getu.getUgender() + "<- 성별");
		System.out.println(getu.getUage() + "<- 나이");
		System.out.println(getu.getUlevel() + "<- 권한");
		System.out.println("--- 회원가입 내역 End ---");
		
	}

	public void gPrint (Goods getp) {
		System.out.println("--- 상품관리 내역 ---");

		System.out.println(getp.getPcode());
		System.out.println(getp.getUid());
		System.out.println(getp.getPname());
		System.out.println(getp.getPjungsang());
		System.out.println(getp.getPhalin());
		System.out.println(getp.getPsangse());
		System.out.println("--- 상품관리 내역 End ---");
	}

	public void oPrint (Order geto) {

		
		System.out.println("--- 주문관리 내역 ---");
		System.out.println(geto.getOcode());
		System.out.println(geto.getPcode());
		System.out.println(geto.getUid());
		System.out.println(geto.getOcount());
		System.out.println(geto.getOprice());
		System.out.println(geto.getOtotal());
		System.out.println(geto.getOaddress());
		System.out.println("--- 주문관리 내역 End ---");
	}
		
	

}

 

package kr.or.ksmart.A;

public class AA02 {


	public static void main(String[] args) {
		
		TotalPrint prnt = new TotalPrint();
		
		User u01 = new User();
		
		u01.setUid("id001");
		u01.setUpw("pw001");
		u01.setUphone("010-001");
		u01.setUgender('남');
		u01.setUage(20);
		u01.setUlevel("구매자");
		
		prnt.uPrint(u01);
	
	
		User u02 = new User();
		
	
		u02.setUid("id002");
		u02.setUpw ("pw002");
		u02.setUphone ("010-002");
		u02.setUgender ('여');
		u02.setUage (30);
		u02.setUlevel ("판매자");
		
		prnt.uPrint(u02);
		
		Goods g01 = new Goods();
		
		System.out.println(g01);
		
		g01.setPcode ("p001");
		g01.setUid (u02.getUid());
		g01.setPname ("노트북");
		g01.setPjungsang (2000000);
		g01.setPhalin (1000000);
		g01.setPsangse ("SW개발용");
		
		prnt.gPrint(g01);
				
		
		Order o01 =new Order();
		
		System.out.println(o01);
		
		o01.setOcode ("o001");
		o01.setPcode (g01.getPcode());
		o01.setUid (u02.getUid());
		o01.setOcount (3);
		o01.setOprice (g01.getPjungsang());
		o01.setOtotal (o01.getOcount() * o01.getOprice());
		o01.setOaddress ("금암동");
			
		prnt.oPrint(o01);
	
		User u03 = new User();

		
		u03.setUid ("id003");
		u03.setUpw ("pw003");
		u03.setUphone ("010-003");
		u03.setUgender ('여');
		u03.setUage (31);
		u03.setUlevel ("판매자");

		prnt.uPrint(u03);
		
		Goods g02 = new Goods();
		g02.setPcode ("p002");
		g02.setUid (u03.getUid());
		g02.setPname ("선풍기");
		g02.setPjungsang (50000);
		g02.setPhalin (40000);
		g02.setPsangse ("시원해");

		prnt.gPrint(g02);
		
		Order o02 =new Order();
		o02.setOcode("o002");
		o02.setPcode (g02.getPcode());
		o02.setUid (u03.getUid());
		o02.setOcount(5);
		o02.setOprice(g02.getPjungsang());
		o02.setOtotal(o02.getOcount() * o02.getOprice());
		o02.setOaddress ("서신동");
		
		prnt.oPrint(o02);

	
	
		User u04 = new User();

		
		u04.setUid ("id004");
		u04.setUpw ("pw004");
		u04.setUphone ("010-004");
		u04.setUgender ('여');
		u04.setUage (32);
		u04.setUlevel ("관리자");

		prnt.uPrint(u04);
		
		Goods g03 = new Goods();
	
		g03.setPcode ("p003");
		g03.setUid (u04.getUid());
		g03.setPname ("사과박스");
		g03.setPjungsang (100000);
		g03.setPhalin (80000);
		g03.setPsangse ("SW개발용");
		
		prnt.gPrint(g03);
	
		
		Order o03 =new Order();
		
		o03.setOcode ("o003");
		o03.setPcode(g03.getPcode());
		o03.setUid(u04.getUid());
		o03.setOcount(2);
		o03.setOprice (g03.getPjungsang());
		o03.setOtotal (o03.getOcount() * o03.getOprice());
		o03.setOaddress("덕진동");
		
		prnt.oPrint(o03);

	}

	

	
	
	
	

}

 

1 - ② - ⑴ 하나의 패키지서로다른 클래스에서 리턴 없고 입력 없는 메서드 선언 및 호출

더보기

회원관리클래스(설계도면!) >>>>통해서>>>> 새로운 객체 생성 > 새 주소 생성 > 데이타/메소드 영역 생김 > (id 영역에 id001값)데이터 세팅할 수 있다. -끝-

 

다시 주소를 찾아가 >> id 값 꺼내온다 .(getting)


 

package kr.or.ksmart.A;

public class User {

//*전역변수 (global variable) = 필드 (field) = 멤버 = 멤버필드
//	- 클래스 블록 안쪽 메서드 블록 바깥쪽에 선언되어있는 변수
//프로퍼티 (property)
//변수의 영역 기준 (블록기준)
//	- 중괄호 밖에 선언된 변수는 안쪽에서 사용 가능
//	- 중괄호 안에 선언된 변수는 밖에서 사용 불가
	
//User class에서 값을 세팅/게팅하는 개념X
	
	String uid;
	String upw;
	String uphone;
	char ugender;
	int uage;
	String ulevel;

}
package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
		
		
		User u01 = new User();

	}

}

User class data type으로 u01객체참조변수를 선언하고
User생성자메서드로 새로운 객체를 생성하고
생성된 객체의 주소값을 u01객체참조변수에 할당한다.

 

 

package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
		
		
		User u01 = new User();
		
		System.out.println(u01 + "<- u01");
		System.out.println(u01.uid + "<- u01.uid");
		//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서
		//data 영역 uid 전역변수에 담겨있는 값 null을 꺼내와서 (getting) 콘솔창에 출력한다.
		
		u01.uid ="id001";
		//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서 
		//data 영역 uid 전역변수에 id001 값을 세팅(입력)한다.
		
		System.out.println(u01.uid + "<- u01.uid");
		//u01객체참조변수에 할당된 주소(User class를 통해 생성된 객체)에 찾아가서 
		//data 영역 uid 전역변수에 담겨있는 값 id001을 꺼내와서 (getting) 콘솔창에 출력한다.
		
	}

}

1 - ② - ⑵ 하나의 패키지  서로다른 클래스에서 리턴 없고 입력 있는 메서드 선언 및 호출

package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
				
		User u01 = new User();
		
		uPrint(u01);
		System.out.println(u01);
		
		u01.uid = "id001";
		u01.upw = "pw001";
		u01.uphone = "010-001";
		u01.ugender = '남';
		u01.uage = 20;
		u01.ulevel = "구매자";
		uPrint(u01);
		
		User u02 = new User();
		System.out.println(u02);
		
		u02.uid = "id002";
		u02.upw = "pw002";
		u02.uphone = "010-002";
		u02.ugender = '여';
		u02.uage = 30;
		u02.ulevel = "판매자";
		uPrint(u02);
		
		User u03 = new User();
		System.out.println(u03);
		
		u03.uid = "id003";
		u03.upw = "pw003";
		u03.uphone = "010-003";
		u03.ugender = '여';
		u03.uage = 31;
		u03.ulevel = "판매자";
		uPrint(u03);
		
		User u04 = new User();
		System.out.println(u04);
		
		u04.uid = "id004";
		u04.upw = "pw004";
		u04.uphone = "010-004";
		u04.ugender = '여';
		u04.uage = 32;
		u04.ulevel = "관리자";
		uPrint(u04);
	}

	//회원 출력하는 메서드 선언

	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("--- 회원가입 내역 End ---");
		
	}
	
	
}

흐름


Class 추가 (Goods 와 Order class)

package kr.or.ksmart.A;

public class Goods {

	String pcode ;
	String uid;
	String pname;
	int pjungsang ;
	int phalin;
	String psangse;
	
}
package kr.or.ksmart.A;

public class Order {
	
	String ocode;
	String pcode;
	String uid;
	int ocount;
	int oprice;
	int ototal;
	String oaddress;

}

 

main 포함된 class 에서 값 세팅 및 출력하는 메소드 호출

package kr.or.ksmart.A;

public class AA01 {

	public static void main(String[] args) {
				
		User u01 = new User();
		
		uPrint(u01);

		
		u01.uid = "id001";
		u01.upw = "pw001";
		u01.uphone = "010-001";
		u01.ugender = '남';
		u01.uage = 20;
		u01.ulevel = "구매자";
		uPrint(u01);
		
		User u02 = new User();

		
		u02.uid = "id002";
		u02.upw = "pw002";
		u02.uphone = "010-002";
		u02.ugender = '여';
		u02.uage = 30;
		u02.ulevel = "판매자";
		uPrint(u02);
		Goods g01 = new Goods();
		g01.pcode="p001";
		g01.uid = u02.uid;
		//u02객체참조변수에 할당된 주소 즉 User class를 통해 생성된 객체 내의 data 영역의 uid 전역변수에 담겨있는 "id002" 값을 꺼내와서
		//g01객체참조변수에 할당된 주소 즉 Goods class를 통해 생성된 객체 내의 data 영역의 uid전역변수에 "id002" 값을 세팅한다.
		g01.pname ="노트북";
		g01.pjungsang =2000000;
		g01.phalin=1000000;
		g01.psangse="SW개발용";
		gPrint(g01);
		Order o01 =new Order();
		o01.ocode= "o001";
		o01.pcode= g01.pcode;
		o01.uid=u02.uid;
		o01.ocount=3;
		o01.oprice=g01.pjungsang;
		o01.ototal = (o01.ocount * o01.oprice);
		o01.oaddress ="금암동";
		oPrint(o01);
		
		
		
		
		User u03 = new User();

		
		u03.uid = "id003";
		u03.upw = "pw003";
		u03.uphone = "010-003";
		u03.ugender = '여';
		u03.uage = 31;
		u03.ulevel = "판매자";
		uPrint(u03);
		Goods g02 = new Goods();
		g02.pcode ="p002";
		g02.uid = u03.uid;
		g02.pname = "선풍기";
		g02.pjungsang = 50000;
		g02.phalin = 40000;
		g02.psangse ="시원해";
		gPrint(g02);
		Order o02 =new Order();
		o02.ocode= "o002";
		o02.pcode= g02.pcode;
		o02.uid=u03.uid;
		o02.ocount=5;
		o02.oprice=g02.pjungsang;
		o02.ototal = (o02.ocount * o02.oprice);
		o02.oaddress ="서신동";
		oPrint(o02);
				
		
		User u04 = new User();

		
		u04.uid = "id004";
		u04.upw = "pw004";
		u04.uphone = "010-004";
		u04.ugender = '여';
		u04.uage = 32;
		u04.ulevel = "관리자";
		uPrint(u04);
		Goods g03 = new Goods();
		g03.pcode = "p003";
		g03.uid = u04.uid;
		g03.pname ="사과박스";
		g03.pjungsang = 100000;
		g03.phalin = 80000;
		g03.psangse ="SW개발용";
		gPrint(g03);
		Order o03 =new Order();
		o03.ocode= "o003";
		o03.pcode= g03.pcode;
		o03.uid=u04.uid;
		o03.ocount=2;
		o03.oprice=g03.pjungsang;
		o03.ototal = (o03.ocount * o03.oprice);
		o03.oaddress ="덕진동";
		oPrint(o03);
	}

	//회원 출력하는 메서드 선언

	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("--- 회원가입 내역 End ---");
		
	}
	
	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("--- 상품관리 내역 End ---");
		
	}
	
	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("--- 주문관리 내역 End ---");
		
	}
}

호출 결과 (콘솔창 내용)

--- 회원가입 내역 ---
null<- 아이디
null<- 비밀번호
null<- 전화번호
<- 성별 0
<- 나이
null<- 권한
--- 회원가입 내역 End ---
--- 회원가입 내역 ---
id001<- 아이디
pw001<- 비밀번호
010-001<- 전화번호
남<- 성별
20<- 나이
구매자<- 권한
--- 회원가입 내역 End ---
--- 회원가입 내역 ---
id002<- 아이디
pw002<- 비밀번호
010-002<- 전화번호
여<- 성별
30<- 나이
판매자<- 권한
--- 회원가입 내역 End ---
--- 상품관리 내역 ---
p001
id002
노트북
2000000
1000000
SW개발용
--- 상품관리 내역 End ---
--- 주문관리 내역 ---
o001
p001
id002
3
2000000
6000000
금암동
--- 주문관리 내역 End ---
--- 회원가입 내역 ---
id003<- 아이디
pw003<- 비밀번호
010-003<- 전화번호
여<- 성별
31<- 나이
판매자<- 권한
--- 회원가입 내역 End ---
--- 상품관리 내역 ---
p002
id003
선풍기
50000
40000
시원해
--- 상품관리 내역 End ---
--- 주문관리 내역 ---
o002
p002
id003
5
50000
250000
서신동
--- 주문관리 내역 End ---
--- 회원가입 내역 ---
id004<- 아이디
pw004<- 비밀번호
010-004<- 전화번호
여<- 성별
32<- 나이
관리자<- 권한
--- 회원가입 내역 End ---
--- 상품관리 내역 ---
p003
id004
사과박스
100000
80000
SW개발용
--- 상품관리 내역 End ---
--- 주문관리 내역 ---
o003
p003
id004
2
100000
200000
덕진동
--- 주문관리 내역 End ---

흐름

 

 

method 호출 원리는 변함이 없다 | Return data type 과 method 호출은 관련이 없다!

1 - ① - ⑶ 하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 없는 메서드 선언 및 호출 

 

<<실행순서 서술하기>>



① a 메서드 호출
② a 메서드 실행
  "01 a 메서드 실행" 문자열을 콘솔창에 실행
③ return 값 "1루타" 를 메서드 호출한 곳으로 리턴
④ String data type으로 result 변수 선언 "1루타" 문자열을 result 변수에 대입
⑤ result 변수에 담겨있는 "1루타" 문자열을 포함하여 콘솔창에 출력

리턴값은 하나인데 조건에 따라서 리턴값이 바뀔 수 있다.

현재는 리턴값 하나가 리턴된다.
여러개 리턴은 나중에 가능할 것!

1 - ① - ⑷ 하나의 패키지 내 하나의 클래스에서 리턴 있고 입력 있는 메서드 선언 및 호출 





<<실습>>

<기능정리>

 


package Dog.and.Cat;

public class Login {

	public static void main(String[] args) {
		
		int result = uInsert ("id002", "pw002");
		int result2 = logre (result, "윤깨물", "고슴도치");
		typsort(result2, 21);
		agegroup (result);
		
		
			
	}
	
	public static void agegroup (int log) {
		if (log == 11) {
			System.out.println("성장기");
		} else if (log == 12) {
			System.out.println("성견");
		} else if (log == 13) {
			System.out.println("중장년견");
		} else if (log == 14) {
			System.out.println("노령견");
		} else if (log == 21) {
			System.out.println("성장기");
		} else if (log == 22) {
			System.out.println("성묘");
		} else if (log == 23) {
			System.out.println("노령묘");
		} else if (log == 24) {
			System.out.println("초노령묘");
		} 
	}
	
	
	public static int typsort(int log, int aage) {

		
		if(log == 1) { 
			System.out.println("강아지 나이 : "+aage+" 살");

				if(aage <= 1) {
					log = 11;
				} else if(aage >= 2 & aage <= 4) {
					log = 12;
				} else if(aage >= 5 & aage <= 10) {
					log = 13;
				} else if (aage >= 11) {
					log = 14;
				}

		} else if(log == 2) {
			System.out.println("고양이 나이 : "+aage+" 살");
			
				if(aage <= 1) {
					log = 21;
				} else if(aage >= 2 & aage <= 4) {
					log = 22;
				} else if(aage >= 5 & aage <= 10) {
					log = 23;
				} else if (aage >= 11) {
					log = 24;
				}
		} else if (log == 3) {
			System.out.println("기타 동물 등록은 고객 센터에 문의 바랍니다.");

		}
		
		
		return log;
	}

		
	public static int logre (int log, String aname, String atype) {

			
		
			if(log == 1) { 
			System.out.println( "로그인 성공! 환영합니다.");
			System.out.println( atype+" "+aname+" 의 집사님");
				
				if(atype.equals("강아지")) {
					log = 1;
				} else if (atype.equals("고양이")) {
					log = 2;
				} else {
					log = 3;
				}
				
			} else if(log == 2) {
				System.out.println("PW를 확인하세요.");

			} else if(log == 3) {
				System.out.println("등록되지 않은 ID 입니다.");
			}
			
	
			return log;
	}
	
	public static int uInsert (String id, String pw) {
		System.out.println("ID : " +id);
		System.out.println("PW : " +pw);
		
		
		
		String dbid = "id002";
		String dbpw = "pw002";
		
		int log = 0;
		
		if(id.equals(dbid)) {
			if(pw.equals(dbpw)) {
				log = 1;
			}
			else {
				log = 2;
			}
		}else {
			log = 3;
		}
	
		return log;
	}

}

<실행 순서에 따른 해설>


① uInsert 메서드를 호출, 실행

ID : 입력된 id
PW : 입력된 pw 문자열을 콘솔창에 출력한다.

int log는 초기값이 0이다.

입력된id와 dbid가 같고 입력된 pw와 dbpw가 같을경우 log변수에 담긴 값 1
입력된 id와 dbid가 같고 입력된 pw와 dbpw가 다를경우 log변수에 담긴 값 2
입력된 id와 dbid가 다를경우 log 변수에 담긴 값 3  


입력된 id와 dbid가 같고 입력된 pw와 dbpw가 같으므로 log 변수에 담긴 값은 1



② return 값 log 변수에 담겨있는 값 1을 메서드를 호출한 곳으로 리턴



③ int data type 으로 result 변수를 선언하고 정수 1을 result 변수에 대입



④ logre 메서드를 호출, 실행

result 변수에 담겨있는 값은 정수 1 > log 변수에 입력.

log 변수에 담긴 값이 1이라면 " 로그인 성공! 환영합니다. 입력된 atype, aname의 집사님" 문자열을 출력하고
atype이 강아지 문자열일 경우 log 변수에 담긴 값 1
고양이 문자열일 경우 log 변수에 담긴 값 2
강아지 또는 고양이 문자열이 아닐 경우 log 변수에 담긴 값 3

log 변수에 담긴 값이 2라면 "PW를 확인하세요." 문자열 출력
log 변수에 담긴 값이 3이라면 "등록되지 않은 ID 입니다." 문자열 출력


log 변수에 입력된 값이 1이고 atype에 입력된 값이 고슴도치 문자열이기 때문에 log 변수에 담겨있는 값은 정수 3



⑤ return 값 log 변수에 담겨있는 값 3을  메서드를 호출한 곳으로 리턴
  int data type으로 result2를 선언하고 정수 3을 result2 변수에 대입한다.

⑥ typsort 메소드를 호출, 실행

result2 변수에 담겨있는 값은 정수 3 > log 변수에 입력.

log 변수에 담긴 값이 1이라면
강아지 나이 : aage 살 문자열 출력.
입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 11
2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 12
5보다 크거나  같고 10보다 작거나 같으면 log 변수에 담긴 값 13
그 외는 log 변수에 담긴 값 14


log 변수에 담긴 값이 2라면
고양이 나이 : aage 살 문자열 출력.
입력받은 aage의 나이가 1보다 작거나 같으면 log 변수에 담긴 값 21
2보다 크거나 같고 4보다 작거나 같으면 log 변수에 담긴 값 22
5보다 크거나  같고 10보다 작거나 같으면 log 변수에 담긴 값 23
그 외는 log 변수에 담긴 값 24


log 변수에 담긴 값이 3이라면 
기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열 출력



log 변수에 담긴 값이 3이기 때문에 기타 동물 등록은 고객 센터에 문의 바랍니다. 문자열을 출력한다.


리턴할 log 변수에 담긴 값이 없으므로 0이 된다.



⑦ return 값 log 변수에 담긴 값 0을 메서드를 호출한 곳으로 리턴


⑧ agegroup 메서드를 호출, 실행

log 변수에 담긴 값이 11 이라면 성장기 문자열
     12 라면 성견 문자열
     13 이라면 중장년견 문자열
     14 라면 노령견 문자열
     21 이라면 성장기 문자열
     22 라면 성묘 문자열
     23 이라면 노령묘 문자열
     24 라면 초노령묘 문자열을 출력한다.

log 변수에 담긴 값이 0이므로 아무것도 출력되지 않는다.

<실행 결과> 


출력오류?!

package Dog.and.Cat;

public class Login {

	public static void main(String[] args) {
		
		int result = uInsert ("id002", "pw002");
		logre (result, "윤깨물", "고슴도치");
		typsort(result, 21);
		agegroup (result);
		
		
			
	}
	
	public static void agegroup (int log) {..
	
	public static int typsort(int log, int aage) {..
		
	public static int logre (int log, String aname, String atype) {..
	
	public static int uInsert (String id, String pw) {..
	
}

오류내용

문법상의 오류는 없었지만 의도와 다른 내용이 출력되었다.

고슴도치이기 때문에 이 내용이 출력되어야 한다.

 


 

오류 수정

메서드 호출부분에서 result 값을 계속 같은 result 값으로 받았기 때문에 발생한 오류였다!
새로운 변수 result2를 int data type 으로 지정해주고 result2 다음 메서드에서 새로운 result2의 값을 받았더니 원하는 내용이 출력되었다.

 

준비된 동작이 호출시에 동작한다.

1. 자바 기초 문법

 * 메서드를 선언하고 호출 할 수 있다.
  - 12가지 경우의 수
   ① 하나의 패키지하나의 클래스에서 메서드 선언 및 호출 (4가지)
     (1) 리턴X 입력X & 리턴X 입력O
     (2) 리턴O 입력X & 리턴O 입력O
   ② 하나의 패키지서로다른 클래스에서 메서드 선언 및 호출 (4가지)
     (1) 리턴X 입력X & 리턴X 입력O
     (2) 리턴O 입력X & 리턴O 입력O
   ③ 서로다른 패키지 내 서로다른 클래스에서 메서드 선언 및 호출 (4가지)
     (1) 리턴X 입력X & 리턴X 입력O
     (2) 리턴O 입력X & 리턴O 입력O

 문법은 끝이 있지만 응용은 끝이 없다.

 

 

 

* java 파일 생성

 

 - Web Content가 아닌 Java Resources > src에서 작업
 - 한국스마트정보교육원 : ksmart.or.kr (패키지 명은 보통 도메인을 뒤집어 쓴다.)
 - package : kr.or.ksmart.A

  · src>kr>or>ksmart>A 경로의 폴더가 생긴 모습
 - class : AA01
 - class : AA02
 - class : AA03
 - class : AA04

· class 생성시 public static void main(Sting[] args) 체크


· AA01.java 가 생성된 모습

· AA01.java 파일의 내용





1 - ① - ⑴ 하나의 패키지 내 하나의 클래스에서 리턴 없고 입력 없는 메서드 선언 및 호출 

 - 중괄호를 잘 열고 닫자! (block 개념)


선언한 메서드를 호출한 모습!

1 - ① - ⑵ 하나의 패키지 내 하나의 클래스에서 리턴 없고 입력 있는 메서드 선언 및 호출 

 - (int age) : age 변수에는 정수값만 입력되어야 한다.
 - a(10); : a(int age) = 10
  * int data type으로 age 변수를 선언하고 10 값을 age 변수에 대입(입력)

a메서드 호출 시 10 정수값을 age 매개변수에 입력 후 대입하여 메서드가 실행된다. (콘솔창에 출력)



<<실행순서 서술하기>>



예제 1)

  >> b 메서드 호출시 홍길동 문자열을 name 매개변수에 입력 후 메서드 실행


예제2)

  >> c 메서드 호출시 남 문자를 gender 매개변수에 입력 후 메서드 실행


예제 3)

*********메서드 선언*********
 1) 접근지시(지정)자 (Access Modifier)
 
  - public 
   [ public (모든곳) / protected (같은 패키지) / private (같은 클래스) ]

 2) 정적키워드 : static 

 3) return data type  
  - void (리턴x) 

 4) method name : uInsert 
  
 5) 매개변수 data type / name 
  - 첫번째 매개변수 data type: String 
     *첫번째 매개변수 name : name 
  - 두번째 매개변수 data type: int 
     *두번째 매개변수 name : age 
  - 세번째 매개변수 data type: char
    *세번째 매개변수 name : gender 
                      로 메서드가 선언 되었다.
  
*********메서드 호출 원리 (가장 중요!)*********
 1) 메서드name 일치
 2) 매개변수 개수와 입력 개수 일치 
 3) 매개변수 data type에 일치하는 값이 각각의 매개변수에 입력되어야 메서드가 호출

* 조건의 false/true를 확인하는 방법 



method body 내에 조건식만 출력해보기

<<조건식>>

예제1-1) int/ if, else if

예제 1-2) int/if, else

 


예제 3) String/ if 안의 if, else


예제4) char/ if, else if, else

 

*Method Overloading

하나의 클래스에서 동일한 이름의 메서드를 입력받는 데이터의 개수와 data type을 다르게 프로그래밍 할 수 있는 방법.

<<실습>>

 1. 하나의 메서드 기능 정리

2. JAVA 코드 작성

3. 결과

                       

+ Recent posts