*제품만들기 실습
*폴더 : /productManagerArray 만들기
1. ProductDTO클래스를 UML을 보고 작성하세요. 저장은 productManagerArray 폴더에 하세요.
toString() - 객체의 모든 attribute의 값을 하나의 String으로 만들어 return 하도록 작성.
public class ProductManagerService
{
private ProductDTO[] productList;
private int totalProductCount; //배열로 부터 현재 데이터가 몇개 들어가 있는지를 알게 해줄 변수
public ProductManagerService(int length){
productList = new ProductDTO[length];
}
public ProductManagerService(){
productList = new ProductDTO[100];
}
//productList에 제품을 추가하는 메소드
/*
instance 변수 productList에 인수로 받은 제품 정보를 추가 하는 메소드
*/
public void addProduct(ProductDTO productDTO){
//1.배열(productList)에 제품을 넣을 index가 있는지 체크
//1-1 없으면 (totalProductCount==배열의 length) 넣을수 없다는 메세지를 출력하고 종료
//2.productId는 식별자
//2. 배열(productList)애 같은 productId값을 가진 제품이 저장되 있는지 체크
//2-1 저장되 있으면 같은 아이디의 제품이 있어 등록할 수 없다는 메세지 출력하고 종료
//3. 배열에 제품정보 추가
//4. totalProductCount의 값을 1 증가.
/*
//1.배열(productList)에 제품을 넣을 index가 있는지 체크
//1-1 없으면 (totalProductCount==배열의 length) 넣을수 없다는 메세지를 출력하고 종료
if(totalCount == productList.length){
System.out.println("제품정보를 넣을 저장 장소가 없습니다.");
return;
}
//2.productId는 식별자
//2. 배열(productList)애 같은 productId값을 가진 제품이 저장되 있는지 체크
//2-1 저장되 있으면 같은 아이디의 제품이 있어 등록할 수 없다는 메세지 출력하고 종료
for(int i = 0;i<totalProductCount;i++){
if(productList[i].getProductId().equals(productDTO.getProductId())){
System.out.println("같은 제품이 있습니다.");
return;
}
//3. 배열에 제품정보 추가
this.productList[totalProductCount]=productDTO;
//4. totalProductCount의 값을 1 증가.
totalProductCount++;
}
}
*/
System.out.println("함수를 썼을경수");
if(totalProductCount==productList.length){
System.out.println("넣을 공간이 없습니다.");
}
else if(searchProductById(productDTO.getProductId())!=null){
System.out.println("같은 제품이 있습니다.");
}
else{
this.productList[totalProductCount]=productDTO;
totalProductCount++;
}
}
/*
instance 변수 productList에 저장된 모든 상품의 정보(id~info)를 출력해 주는 메소드
*/
public void printProductList(){
for(int i =0;i<totalProductCount;i++){
System.out.println(productList[i].toString());
}
}
public ProductDTO searchProductById(String productId){
ProductDTO pDTO = null;
for(int i =0;i<totalProductCount;i++){
if(productId.equals(productList[i].getProductId())){
pDTO=productList[i];
}
}
return pDTO;
}
public void modifyProductInfo(ProductDTO productDTO){
for(int i=0;i<totalProductCount;i++){
if(productDTO.getProductId().equals(productList[i].getProductId())){
productList[i]=productDTO;
}
}
}
public void removeProductById(String productId){
for(int i=0;i<totalProductCount;i++){
if(productList[i].getProductId().equals(productId)){
productList[totalProductCount]=null;
}
}
}
}
public class TestProductManager
{
public static void main(String[] args)
{
ProductDTO pdto1 = new ProductDTO("p-111","이름",5000,"제조사","정보");
ProductDTO pdto2 = new ProductDTO("p-222","마우스",12000,"삼성","휠");
ProductDTO pdto3 = new ProductDTO("p-333","컴퓨터",43000,"LG","무선 마우스");
ProductDTO pdto4 = new ProductDTO("3333333333","TV",43000,"LG","무선 마우스");
// System.out.println(pdto1.getProductName());
// System.out.println(pdto1.toString());
ProductManagerService pms = new ProductManagerService(30);
pms.addProduct(pdto1);
pms.addProduct(pdto2);
pms.addProduct(pdto3);
pms.addProduct(null);
//pms.addProduct(pdto3);
pms.printProductList();
System.out.println("-----------id로 제품정보 조회------------");
ProductDTO p1 = pms.searchProductById("p-111");
System.out.println("p-111 제품정보 : "+p1.toString());
ProductDTO p2 = pms.searchProductById("p-222");
System.out.println("p-222 제품정보 : "+p1.toString());
ProductDTO p3 = pms.searchProductById("p-333");
System.out.println("p-333 제품정보 : "+p1.toString());
//없는 Id로 조회
ProductDTO p4 = pms.searchProductById("p-555");
System.out.println("p-111 제품 정보 : "+p4);
System.out.println("--------------정보수정--------------");
pdto1 = new ProductDTO("p-111","노트북",15000000,"제조사","정보");
pdto2 = new ProductDTO("p-222","마우스",1200000000,"삼성","휠");
pms.modifyProductInfo(pdto1);
pms.modifyProductInfo(pdto2);
pms.printProductList();
System.out.println("--------------정보삭제--------------");
pms.removeProductById("p-222");
pms.printProductList();
// System.out.println("-------------------------------");
// pms.printProductList();
}
}
----------------------------
public class ProductManagerService
{
private ProductDTO[] productList;
private int totalProductCount; //배열로 부터 현재 데이터가 몇개 들어가 있는지를 알게 해줄 변수
public ProductManagerService(int length){
productList = new ProductDTO[length];
}
public ProductManagerService(){
productList = new ProductDTO[100];
}
//productList에 제품을 추가하는 메소드
/*
instance 변수 productList에 인수로 받은 제품 정보를 추가 하는 메소드
*/
public void addProduct(ProductDTO productDTO){
if(isNull(productDTO)){
System.out.println("인자로 null값이 들어 왔습니다.");
return ;
}
//1.배열(productList)에 제품을 넣을 index가 있는지 체크
//1-1 없으면 (totalProductCount==배열의 length) 넣을수 없다는 메세지를 출력하고 종료
//2.productId는 식별자
//2. 배열(productList)애 같은 productId값을 가진 제품이 저장되 있는지 체크
//2-1 저장되 있으면 같은 아이디의 제품이 있어 등록할 수 없다는 메세지 출력하고 종료
//3. 배열에 제품정보 추가
//4. totalProductCount의 값을 1 증가.
//1.배열(productList)에 제품을 넣을 index가 있는지 체크
//1-1 없으면 (totalProductCount==배열의 length) 넣을수 없다는 메세지를 출력하고 종료
if(totalProductCount == productList.length){
System.out.println("제품정보를 넣을 저장 장소가 없습니다.");
return;
}
//2.productId는 식별자
//2. 배열(productList)애 같은 productId값을 가진 제품이 저장되 있는지 체크
//2-1 저장되 있으면 같은 아이디의 제품이 있어 등록할 수 없다는 메세지 출력하고 종료
/* for(int i = 0;i<totalProductCount;i++){
if(productList[i].getProductId().equals(productDTO.getProductId())){
System.out.println("같은 제품이 있습니다. 아이디를 바꾸세요.");
return;
}
}
*/
ProductDTO p = searchProductById(productDTO.getProductId());
if(p!=null){
System.out.println("같은 제품이 있습니다. 아이디를 바꾸세요.");
return;
}
//3. 배열에 제품정보 추가
this.productList[totalProductCount]=productDTO;
//4. totalProductCount의 값을 1 증가.
totalProductCount++;
/*
//System.out.println("함수를 썼을경우");
if(totalProductCount==productList.length){
System.out.println("넣을 공간이 없습니다.");
}
else if(searchProductById(productDTO.getProductId())!=null){
System.out.println("같은 제품이 있습니다.");
}
else{
this.productList[totalProductCount]=productDTO;
totalProductCount++;
}
*/
}
/*
instance 변수 productList에 저장된 모든 상품의 정보(id~info)를 출력해 주는 메소드
*/
public void printProductList(){
for(int i =0;i<totalProductCount;i++){
System.out.println(productList[i].toString());
}
}
/*
productId를 인수로 받아 productList에서 찾아 그 제품의 정보를 return하는 메소드
없을 경우 -null을 return
*/
public ProductDTO searchProductById(String productId){
ProductDTO pDTO = null;
if(isNull(productId)){
System.out.println("인자로 null값이 들어 왔습니다.");
return pDTO;
}
for(int i =0;i<totalProductCount;i++){
if(productId.equals(productList[i].getProductId())){ //조회대상
pDTO=productList[i];
break;
}
}
// if(pDTO==null){
// System.out.println("동일한 ID가 없습니다.");
// }
return pDTO;
/*
for(int i =0;i<totalProductCount;i++){
if(productId.equals(productList[i].getProductId())){ //조회대상
return productList[i];
}
}
if(pDTO==null){
System.out.println("동일한 ID가 없습니다.");
}
return null;
*/
}
/*
정보를 수정하는 메소드
id,이름,가격, 제조사,정보
수정할 내용을 ProductDTO 객체로 받아서 productList에서 id를 가지고 찾아
id가 같은 제품의 정보를 인수로 받은 정보로 변경한다.
*/
public void modifyProductInfo(ProductDTO productDTO){
if(isNull(productDTO)){
System.out.println("인자로 null값이 들어 왔습니다.");
return ;
}
for(int i=0;i<totalProductCount;i++){
if(productDTO.getProductId().equals(productList[i].getProductId())){
productList[i]=productDTO;
break;
}
}
}
/*
인수로 받은 productId를 가지고 productList에서 제품을 찾아 삭제(제거)
*/
public void removeProductById(String productId){
if(isNull(productId)){
System.out.println("인자로 null값이 들어 왔습니다.");
return ;
}
for(int i=0;i<totalProductCount;i++){
if(productList[i].getProductId().equals(productId)){
for(int j=i;j<totalProductCount-1;j++){
productList[j]=productList[j+1];
}
// for(int j=i+1;j<totalProductCount-1;j++){
// productList[j-1]=productList[j];
// }
totalProductCount--;
productList[totalProductCount]=null;
break;
}
}
}
private boolean isNull(ProductDTO pdto){
boolean flag = false;
if(pdto == null){
flag = true;
}
return flag;
}
private boolean isNull(String str){
boolean flag = false;
if(str == null){
flag = true;
}
return flag;
}
}
-------------------------------------
public class ProductDTO
{
private String productId;
private String productName;
private int productPrice;
private String productMaker;
private String productInfo;
public ProductDTO(){}
public ProductDTO(String productId, String productName, int productPrice, String productMaker, String productInfo){
this.productId=productId;
this.productName=productName;
this.productPrice=productPrice;
this.productMaker=productMaker;
this.productInfo=productInfo;
}
public String getProductId(){
return productId;
}
public void setProductId(String productId){
this.productId = productId;
}
public String getProductName(){
return productName;
}
public void setProductName(String productName){
this.productName = productName;
}
public int getProductPrice(){
return productPrice;
}
public void setProductName(int productPrice){
this.productPrice = productPrice;
}
public String getProductMaker(){
return productMaker;
}
public void setProductMaker(String productMaker){
this.productMaker = productMaker;
}
public String getProductInfo(){
return productInfo;
}
public void setProductInfo(String productInfo){
this.productInfo = productInfo;
}
public String toString(){
return productId+" "+productName+" "+productPrice+" "+productMaker+" "+productInfo;
}
}
============================================================
ex :
public class CommandLineArgs
{
//JVM은 실행 시 (java class명) 입력한 값을 main()의 인자로 넘겨준다.
//예 : java CommandLineArgs A ABC 안녕 -> length 가 3인 배열을 만들어 A, ABC, 안녕
//값을 넣어 main메소드의 인자로 넘긴다.
public static void main(String[] args)
{
System.out.println("args.length : "+ args.length);
System.out.println("------command line argument로 넘어온 값들-------------");
for(int i = 0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
//CommandLineArgs.java
//java CommandLineArgs 안녕 반갑습니다 abc
//java CommandLineArgs "안녕 반갑습니다 abc"