보기보기 개발 블로그

eclipse / 자바 1대다 관계 클래스 본문

Java

eclipse / 자바 1대다 관계 클래스

bokboks 2023. 3. 25. 02:07

안녕하세요

지난 포스팅에선 자바에서 1대1 관계 클래스에 대하여 알아본이후

이번에는 자바에서 1대다 관계 클래스에 대하여 알아보겠습니다.

 

 

eclipse / 자바 1대1 관계 클래스

안녕하세요 지난 포스팅에서 자바의 Final 을 알아본이후 이번에는 자바 1:1 관계클래스에 대해 알아보겠습니다. eclipse / 자바 Final 안녕하세요 저번 포스팅에서 자바 Static 에 이어 이번엔 자바Final

stackbok.tistory.com


  호출할 다른 패키지의 클래스들

Mart 클래스

package javaexp.z03_vo;

import java.util.ArrayList;
/*Mart m = new Mart("행복"); //ctrl+shif+o
		 m.calcu();
		 m.addCart(new Product("사과",3000,2));//ctrl+shif+o
 * 
 */

public class Mart {
	private String name;
	private ArrayList<Product> plist; //ctrl+shift+o
	public Mart() {
		//기본생성자를 통해 동적배열을 초기화
		plist = new ArrayList<Product>();
	}
	public Mart(String name) {
		this.name = name;
		plist = new ArrayList<Product>();
	}
	
	//하나씩 물건담기
	public void addCart(Product prod) {
		System.out.println(prod.getName()+"물건을 카트에 담았습니다.");
		plist.add(prod);
	}
	// 담긴 물건정보 출력 및 계산처리
	public void calcu() {
		System.out.print(name+"마트에서 구매한 물건과 총계");
		if(plist.size()>0) {
			int tot=0;
			for(Product prod:plist) {
				tot+=prod.show();//ctrl 누른상태에서 클릭 = 해당메소드로 이동
			}
			System.out.print("총 비용:"+tot+"원");
		}else {
			System.out.print("구매한 물건이 없습니다.");
		}
	}
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public ArrayList<Product> getPlist() {
		return plist;
	}
	public void setPlist(ArrayList<Product> plist) {
		this.plist = plist;
	}
	
}

BTeam 클래스

package javaexp.z03_vo;

import java.util.ArrayList;

public class BTeam {
	private String tname;
	private ArrayList<BPlayer> bplayer;

	public BTeam() {

	}

	public BTeam(String tname) {
		this.tname = tname;
		bplayer = new ArrayList<BPlayer>();
	}

	// 구성원 한명씩 추가.
	public void addPlayer(BPlayer bp) {
		bplayer.add(bp); //동적배열.add(객체) : 객체 추가처리
		System.out.println(bp.getName() + "선수를 등록.");	
	}

	public void showTeamList() {
		System.out.println(tname+" 등록명단");
		if(bplayer.size()>0) { //크기가 0초과확인.. : 선수가 추가되있으면
			for(BPlayer bp:bplayer) {
				bp.showBPlayer();
			}
		}else {
			System.out.println("아직 등록한 팀원이 없습니다.");
		}
	}

	public String getTname() {
		return tname;
	}

	public void setTname(String tname) {
		this.tname = tname;
	}

	public ArrayList<BPlayer> getBplayer() {
		return bplayer;
	}

	public void setBplayer(ArrayList<BPlayer> bplayer) {
		this.bplayer = bplayer;
	}

}

Product 클래스

package javaexp.z03_vo;

public class Product {
	//필드 선언 : 직접적으로 쓰기와 읽기를 한꺼번에 할 수 없다.
	private String name; //물건명
	private int price; // 가격
	private int cnt; //갯수
	
	//Product p =new Product("사과",3000,2);
//		System.out.println(p);
	
	
	
	
	//생성자 선언
	// 매개변수가 없는 생성자 선언.
	//소스 - 프롬 슈퍼클래스 - 오브젝트 - 제너레이트
	public Product() {
		super();
		// TODO Auto-generated constructor stub
	}
	//필드값을 초기화하는 생성자
	//소스 - 필드
	public Product(String name, int price, int cnt) {
		this.name = name;
		this.price = price;
		this.cnt = cnt;
	}
	//물건명, 가격, 갯수 출력하고 단위계를 리턴 처리..
	public int show() {
		System.out.println(name+"\t");
		System.out.println(price+"\t");
		System.out.println(cnt+"\t");
		return price*cnt;
	}
	
	
	//Product p = new Product();
	//System.out.println(p); //패키지명.클래스명@16진수..
	//System.out.println(p); // toString() 선언을
	//아래와같이 하면, toString() 에서 선언한 내용을 출력한다.
	
	//저장된 필드값을 아래 형식으로 리턴
	@Override
	public String toString() {//소스 - toString
		return "Product [name=" + name + ", price=" + price + ", cnt=" + cnt + "]";
	}
	//기능메서드 선언 : 할당 및 호출메서드.
		// 위에 각 필드값을 쓰기 메서드와 읽기 메서드를 구분하여 처리
		//소스 - 게터 세터
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public int getCnt() {
		return cnt;
	}
	public void setCnt(int cnt) {
		this.cnt = cnt;
	}
	
}

 


1 대 다관계 처리 ( 상단의 클래스 코드들 포함)

package javaexp.a07_multiObj;

import java.util.ArrayList;

import javaexp.z03_vo.BPlayer;
import javaexp.z03_vo.BTeam;
import javaexp.z03_vo.Mart; //해당 패키지 안에있는 모든 클래스를 객체화하여 사용가능
import javaexp.z03_vo.Product;

public class A10_OneVsMulti {
	public static void main(String[] args) {
		/*
		 # 1:다관계 객체 처리.
		 1. 프로그래밍에서 1: 다관계의 내용을 자주 발생하는 프로그래밍 형태이다.
		 2. 하나의 클래스안에 여러개의 다중의 선언된 클래스를 
		 호출하여 선언하고 할당하는 경우를 말한다.
		 	1) 다른 종류의 여러가지 객체가 할당되는 경우
		 		ex) 컴퓨터안에 cpu,ram,hdd등 
		 		여러 가지 다른 종류의 내용들이 할당 하여
		 		사용되는경우
		 		class Computer{
		 			private String comp;
		 			private Cpu cpu;
		 			private Ram ram;
		 			private Hdd hdd;
		 			public void addCpu(Cpu cpu){
		 				this.cpu = cpu;
		 				}
		 			public void addRam(Ram ram){
		 				this.ram = ram;
		 			}
		 			..
		 			public void showInfo(){
		 				if(cpu!=null){
		 					cpu.showInfo();
		 				}else{
		 					System.out.println("CPU가 장착되지 않았습니다.");
		 				}
		 			}
		 			}
		 		
		 	2) 같은 종류의 여러가지 객체가 할당되는 경우
		 		ex) 마트안에 판매하는 여러개의 물품을 
		 		구매하는 경우 배열이나 동적 배열
		 		 ArrayList을 통해서 처리..
		 		 
		 	3) 하나의 클래스안에 같은 종류의 다중의 클래스 선언과 호출,
		 		다른종류의 클래스의 선언과 호출..
		 		 
		 3. 위 내용은 하나씩 객체를 할당하는 
		 메서드를 사용하는 경우와 한꺼번에 할당하는
		 경우가 있다.
		 	1) 마트에서 물건을 하나씩 담는 경우
		 	ex)
		 	class Mart{
		 	
		 		private ArrayList<Product> plist;
		 		
		 		public void buyOne(Product p){
		 			plist.add(p);
		 	}
		 	
		 	2) 마트에서 세트로 물건을 바로 담는 경우..
		 		class Mart{
		 			private ArrayList<Product> plist;
		 			public void buyAll(ArrayList<product> plist){
		 				this.plist = plist;
		 		}
		 4. 담은 다중의 물건을 확인할 때 , 반복문을 활용한다. 단 이때도 조건처리로
		 		해당내용을 메모리를 확인하거나, 담은갯수가 1이상인 경우로
		 		처리하는 경우가 많다.
		 		public void calcuProd(){
		 			System.out.println(name+"마트에서 구매한 물건 계산");
		 			if(plist!=null && plist.size()>0{
		 			for(Product p : plist){
		 				p.showInfo();
		 			}
		 		}
		 5. 구현 순서
		 	1) 다중으로 처리한 종속된 단위 객체를 위한 클래스 선언.
		 	2) 해당 다중 객체를 포함할 클래스 선언
		 		- 필드 : 사용된 속성, ArrayList<단위객체> 객체생성.
		 		- 초기 생성자 설정: 속성값 초기화 , ArrayList<단위객체> 객체 생성.
		 		- 다중의 데이터 처리할 입력 메서드 선언.
		 		- 1: 다관계로 출력하거나 리턴할 객체 선언.
		 		if(list!=null && list.size()>0);
		 		
		 */
		Product p =new Product("사과",3000,2);
		System.out.println(p); 
		//ㄴ> toString() 을 사용하지않을시
		
		 Mart m = new Mart("행복"); //ctrl+shif+o
		 m.calcu();
		 m.addCart(new Product("사과",3000,2));//ctrl+shif+o
		 m.addCart(new Product("바나나",4000,3));
		 m.addCart(new Product("딸기",12000,3));
		 m.calcu();
		 
		 BTeam bt = new BTeam("NC");
		 bt.showTeamList();
		 //BPlayer(int num, String name, String birth)
		 
		 bt.addPlayer(new BPlayer(3,"김선수","000228"));
		 bt.addPlayer(new BPlayer(5,"이선수","000128"));
		 bt.addPlayer(new BPlayer(7,"박선수","001128"));
		 bt.showTeamList();
		 /*
		  ex) BPlayer : 번호, 이름, 생년월일		show() 단위정보
		  	BTeam : 팀명,ArrayList<BPlayer>
		  		public void addPlayer(BPlayer bp)
		  		public void showTeamList()
		  		팀명과 등록된 선수 정보 출력
		  		
		  	1)package javaexp.z03_vo; 에
		  		BPlayer 클래스 선언
		  		----------------------------
		  		BTeam 클래스 선언
		  		----------------------------
		  		
		  	2)main() 호출처리..
		  		BTeam 객체 생성과 초기
		  		BPlayer 단위객체 추가 처리(3명 정도 등록)
		  		전체리스트 출력메서드 호출
		  
		  */
		 
		 
		 
		 
	}
}

 

이상으로 자바에서 1대다 관계 처리에 대하여 알아보았습니다

감사합니다.

'Java' 카테고리의 다른 글

eclipse / 자바 상속  (0) 2023.04.18
eclipse / 자바 패키지  (0) 2023.03.25
eclipse / 자바 1대1 관계 클래스  (0) 2023.03.25
eclipse / 자바 Final  (0) 2023.03.23
eclipse / 자바 Static  (0) 2023.03.23