Link
05-21 14:56
Tags
- java 변수
- 자바 연산자
- 자바 1대다관계
- 자바 다차원 배열
- ChatGPT 번역
- 리액트 네이티브
- 프로그래머스 자바
- JAVA 자동판매기
- 자바 생성자
- JAVA Parameter
- Java switch
- JAVA 연습예제
- JAVA Aray
- 자바 NullPointer
- 자바 객체형 배열처리
- JAVA 데이터타입
- 자바 1대1 관계클래스
- JAVA 메소드 리턴
- 자바 필드값 초기화
- 자바 메서드 매개변수
- JAVA NULL
- JAVA MultiParam
- java 연산자
- JAVA ObjArray
- 개발 로드맵
- 자바 1대1
- Java
- eclipse
- JAVA 메소드
- JAVA 클래스 구성
Archives
- Today
- Total
보기보기 개발 블로그
eclipse / 자바 1대다 관계 클래스 본문
안녕하세요
지난 포스팅에선 자바에서 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 |