//Google AdSense
package kr.or.ksmart;

abstract class User{
	protected String name;
	protected String age;
	public final String getName() {
		return name;
	}
	public final String getAge() {
		return age;
	}
	
	public abstract void setUserInfo(String name, String age);
	
}

class CompanyUser extends User {

	@Override
	public void setUserInfo(String name, String age) {
		super.name = name;
		this.age = age;
		
	}
}


public class JavaBasicEx01 {
	public static void main(String[] args) {
		/*
		 * 실습1. 
		 * User 추상 클래스가 있다. User 추상 클래스를 확장하여 CompanyUser를 구현하고 호출하여라.
		 */
		
		User u = new CompanyUser();
		u.setUserInfo("홍길동", "18");
		System.out.println("이름 : "+u.getName()+"\n나이 : "+u.getAge());
	}
}


package kr.or.ksmart;
abstract class Car{
	private int gas;
	private int num;
	private String  carName;
	public Car (int gas, int num, String  carName) {
		this.gas = gas;
		this.num = num;
		this.carName = carName;
	}
	
	public abstract String carInfo();
	
	public final int getGas() {
		return gas;
	}
	public final int getNum() {
		return num;
	}
	public final String getCarName() {
		return carName;
	}
}

class Bus extends Car {

	public Bus(int gas, int num, String carName) {
		super(gas, num, carName);
		// TODO Auto-generated constructor stub
	}

	@Override
	public String carInfo() {
		int gas = super.getGas();
		int num = super.getNum();
		String carName = super.getCarName();
		String carInfo = "연료 : "+ gas +"\n번호 : "+ num +"\n차이름 : "+ carName; 
		return carInfo;
	}
	
}

public class JavaBasicEx02 {

	public static void main(String[] args) {
		/*
		 * 실습2.
		 * Car라는 추상 클래스가 있다. 
		 * Car라는 추상 클래스를 확장하여 Bus클래스를 구현하고 carInfo()메서드를 호출하여라.
		 * carInfo : 부모 필드의 gas, num, carName의 값을 문자 결합 연산자를 사용하여 car의 정보를 출력시키는 메서드 
		 */
		Car car = new Bus(20, 1234, "버스1234");
		System.out.println(car.carInfo());
	}
}


package kr.or.ksmart;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

class ProductDto{
	private String productName; //상품명
	private int price; //가격
	private String productType; //상품분류 (임대 혹은 판매)
	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public String getProductType() {
		return productType;
	}
	public void setProductType(String productType) {
		this.productType = productType;
	}
}

//상품매출 클래스
abstract class ProductSales{
	/**
	 * 총 분류 총합 판매 내역 등록
	 * */
	public abstract void setProductSale(List<ProductDto> productList);
	/**
	 * 분기 및 분류별 합산
	 * @return int
	 */
	public abstract int quarterSum();
	/**
	 * 분기별 최대 판매 및 임대 상품명
	 * @return String
	 */
	public abstract String maxProductName();
	/**
	 * 분기별 최소 판매 및 임대 상품명
	 * @return String
	 */
	public abstract String minProductName();
}
//임대상품 
class ProductLease extends ProductSales{
	List<ProductDto> productLeaseList = null;
	ProductDto pDto = null;
	@Override
	public void setProductSale(List<ProductDto> productList) {
		productLeaseList = new  ArrayList<ProductDto>();
		if(productList != null) {
			System.out.println("-----임대상품등록시작-----");
			for(int i = 0 ; i <productList.size(); i++) {
				if("임대".equals(productList.get(i).getProductType())) {
					System.out.println(i);
					pDto = new ProductDto();
					pDto.setPrice(productList.get(i).getPrice());
					pDto.setProductName(productList.get(i).getProductName());
					pDto.setProductType(productList.get(i).getProductType());
					productLeaseList.add(pDto);
				}
			}
			System.out.println("-----임대상품등록완료-----");
		}
	}

	@Override
	public int quarterSum() {
		System.out.print("분기 임대 총합 : ");
		int sum = 0;
		for(int i = 0 ; i <productLeaseList.size(); i++) {
				sum += productLeaseList.get(i).getPrice();
			}
		return sum;
	}

	@Override
	public String maxProductName() {
		System.out.print("분기 최대 임대 상품 : ");
		String maxProductName = null;
		int num = 0;
		
		for(int i = 0 ; i <productLeaseList.size(); i++) {
			if(num == 0) {
				num = productLeaseList.get(i).getPrice();
				maxProductName = productLeaseList.get(i).getProductName();
			} else {
				if(productLeaseList.get(i).getPrice() > num) {
					maxProductName = productLeaseList.get(i).getProductName();
					num = productLeaseList.get(i).getPrice();
				}
			}
		}
		return maxProductName;
	}

	@Override
	public String minProductName() {
		System.out.print("분기 최소 임대 상품 : ");
		String minProductName = null;
		int num = 0;
		for(int i = 0 ; i <productLeaseList.size(); i++) {
			if( num == 0) {
				minProductName = productLeaseList.get(i).getProductName();
				num = productLeaseList.get(i).getPrice();
			} else {
				if(productLeaseList.get(i).getPrice() < num) {
					minProductName = productLeaseList.get(i).getProductName();
					num = productLeaseList.get(i).getPrice();
				}
			}
		}
		return minProductName;
	}
}
//판매상품
class ProductSale extends ProductSales {
	List<ProductDto> productLeaseList = null;
	ProductDto pDto = null;
	@Override
	public void setProductSale(List<ProductDto> productList) {
		System.out.println("-----판매상품등록시작-----");
		productLeaseList = new  ArrayList<ProductDto>();
		for(int i = 0 ; i <productList.size(); i++) {
			if("판매".equals(productList.get(i).getProductType())) {
				System.out.println(i);
				pDto = new ProductDto();
				pDto.setPrice(productList.get(i).getPrice());
				pDto.setProductName(productList.get(i).getProductName());
				pDto.setProductType(productList.get(i).getProductType());
				productLeaseList.add(pDto);
			}
		}
		System.out.println("-----판매상품등록완료-----");
	}

	@Override
	public int quarterSum() {
		System.out.print("분기 판매 총합 : ");
		int sum = 0;
		for(int i = 0 ; i <productLeaseList.size(); i++) {
				sum += productLeaseList.get(i).getPrice();
			}
		return sum;
	}

	@Override
	public String maxProductName() {
		System.out.print("분기 최대 판매 상품 : ");
		String maxProductName = null;
		int num = 0;
		for(int i = 0 ; i <productLeaseList.size(); i++) {
			if( num == 0) {
				num = productLeaseList.get(i).getPrice();
				maxProductName = productLeaseList.get(i).getProductName();
			}else {
				if(productLeaseList.get(i).getPrice() > num) {
					num = productLeaseList.get(i).getPrice();
					maxProductName = productLeaseList.get(i).getProductName();
				}
			}
		}
		return maxProductName;
	}

	@Override
	public String minProductName() {
		System.out.print("분기 최소 판매 상품 : ");
		String minProductName = null;
		int num = 0;
		for(int i = 0 ; i <productLeaseList.size(); i++) {
			if(num == 0) {
				num = productLeaseList.get(i).getPrice();
				minProductName = productLeaseList.get(i).getProductName();
			}else {
				if(productLeaseList.get(i).getPrice() < num) {
					num = productLeaseList.get(i).getPrice();
					minProductName = productLeaseList.get(i).getProductName();
				}
			}
		}
		return minProductName;
	}
}

public class JavaBasicEx03 {

	public static void main(String[] args) {		
		//db에서 판매 목록 가지고 왔다는 가정
		List<ProductDto> productSaleList = getPoductList();
		
		/*
		 * 실습3. ProductSales은 상품의 매출을 나타낼 수 있는 추상 클래스이다.
		 *   ProductLease 클래스는 임대상품를 담당하고,
		 *   ProductSale 클래스는 판매상품을 담당한다.
		 *   ProductLease와 ProductSale 클래스는 ProductSales 추상클래스를
		 *   확장하여 추상클래스의 메서드를 구현하고 
		 *   출력을 하여라.
		 *   메서드기능 : 
		 *   quarterSum -> 분기별 합산(분류에 맞는 전체 상품 가격 합산)
		 *   maxProductName -> 최고 매출의 상품명
		 *   minProductName -> 최소의 매출 상품명
		 */
		
		System.out.println("======임대상품매출======");
		ProductSales pl = new ProductLease();
		pl.setProductSale(productSaleList);
		System.out.println(pl.quarterSum());
		System.out.println(pl.maxProductName());
		System.out.println(pl.minProductName());
		System.out.println("====================\n");
		
		System.out.println("======판매상품매출======");
		ProductSales ps = new ProductSale();
		ps.setProductSale(productSaleList);
		System.out.println(ps.quarterSum());
		System.out.println(ps.maxProductName());
		System.out.println(ps.minProductName());
		System.out.println("====================");
	}
	
	/**
	 * 디비에서 상품 판매 및 임대 목록 가지고 온다는 가정
	 * @return List<ProductDto>
	 */
	public static List<ProductDto> getPoductList(){
		
		List<ProductDto> productSaleList = new ArrayList<ProductDto>();
		ProductDto pDto = null;
		pDto = new ProductDto();
		pDto.setPrice(50000);
		pDto.setProductName("임대상품A");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(60000);
		pDto.setProductName("임대상품B");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(30000);
		pDto.setProductName("임대상품C");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(15000);
		pDto.setProductName("판매상품A");
		pDto.setProductType("판매");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(21000);
		pDto.setProductName("판매상품B");
		pDto.setProductType("판매");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(24000);
		pDto.setProductName("판매상품C");
		pDto.setProductType("판매");
		productSaleList.add(pDto);	
		
		return productSaleList;
	}

}


반복작업 최소화

package kr.or.ksmart;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class ProductSumDto{
	private int totalPrice;
	private String maxProductName;
	private String minProductName;
	public int getTotalPrice() {
		return totalPrice;
	}
	public void setTotalPrice(int totalPrice) {
		this.totalPrice = totalPrice;
	}
	public String getMaxProductName() {
		return maxProductName;
	}
	public void setMaxProductName(String maxProductName) {
		this.maxProductName = maxProductName;
	}
	public String getMinProductName() {
		return minProductName;
	}
	public void setMinProductName(String minProductName) {
		this.minProductName = minProductName;
	}	
}

class ProductDto{
	private String productName; //상품명
	private int price; //가격
	private String productType; //상품분류 (임대 혹은 판매)
	public String getProductName() {
		return productName;
	}
	public void setProductName(String productName) {
		this.productName = productName;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public String getProductType() {
		return productType;
	}
	public void setProductType(String productType) {
		this.productType = productType;
	}
}

//상품매출 클래스
abstract class ProductSales{
	/**
	 * 총 분류 총합 판매 내역 등록
	 * */
	public abstract void setProductSale(List<ProductDto> productList);
	/**
	 * 분기 및 분류별 합산
	 * @return int
	 */
	public abstract int quarterSum();
	/**
	 * 분기별 최대 판매 및 임대 상품명
	 * @return String
	 */
	public abstract String maxProductName();
	/**
	 * 분기별 최소 판매 및 임대 상품명
	 * @return String
	 */
	public abstract String minProductName();
	
	protected final ProductSumDto setProductList(List<ProductDto> productList, String getType) {
		ProductSumDto sumDto = new ProductSumDto();
		
		int sum = 0;
		String minProductName = null;
		String maxProductName = null;
		
		if(productList != null) {
			int minPrice = 0;
			int maxPrice = 0;
			for(int i=0; i < productList.size(); i++) {
				ProductDto dto = productList.get(i);
				int price = dto.getPrice();
				String name = dto.getProductName();
				String type = dto.getProductType();
				if(getType.equals(type)) {
					sum += price;
					if(minPrice == 0) {
						minPrice = price;
						minProductName = name;
					}else {
						if(price > minPrice) {
							minPrice = price;
							minProductName = name;
						}
					}
					if(maxPrice == 0) {
						maxPrice = price;
						maxProductName = name;
					}else {
						if(price < maxPrice) {
							maxPrice = price;
							maxProductName = name;
						}
					}
				}
			}
		}
		
		sumDto.setTotalPrice(sum);
		sumDto.setMaxProductName(maxProductName);
		sumDto.setMinProductName(minProductName);
		
		return sumDto;
	} 
	
}
//임대상품 
class ProductLease extends ProductSales{
	
	private int sum;
	private String maxProductName;
	private String minProductName;
	
	@Override
	public void setProductSale(List<ProductDto> productList) {
		ProductSumDto sumDto =  super.setProductList(productList, "임대");
		this.sum = sumDto.getTotalPrice();
		this.maxProductName = sumDto.getMaxProductName();
		this.minProductName = sumDto.getMinProductName();
	}

	@Override
	public int quarterSum() {
		return sum;
	}

	@Override
	public String maxProductName() {
		return maxProductName;
	}

	@Override
	public String minProductName() {
		return minProductName;
	}
	
}
//판매상품
class ProductSale extends ProductSales{
	
	private int sum;
	private String maxProductName;
	private String minProductName;
	
	@Override
	public void setProductSale(List<ProductDto> productList) {
		ProductSumDto sumDto =  super.setProductList(productList, "판매");
		this.sum = sumDto.getTotalPrice();
		this.maxProductName = sumDto.getMaxProductName();
		this.minProductName = sumDto.getMinProductName();
	}

	@Override
	public int quarterSum() {
		return sum;
	}

	@Override
	public String maxProductName() {
		return maxProductName;
	}

	@Override
	public String minProductName() {
		return minProductName;
	}
}

public class JavaBasicEx03 {

	public static void main(String[] args) {		
		//db에서 판매 목록 가지고 왔다는 가정
		List<ProductDto> productSaleList = getPoductList();
		
		/*
		 * 실습3. ProductSales은 상품의 매출을 나타낼 수 있는 추상 클래스이다.
		 *   ProductLease 클래스는 임대상품를 담당하고,
		 *   ProductSale 클래스는 판매상품을 담당한다.
		 *   ProductLease와 ProductSale 클래스는 ProductSales 추상클래스를
		 *   확장하여 추상클래스의 메서드를 구현하고 
		 *   출력을 하여라.
		 *   메서드기능 : 
		 *   quarterSum -> 분기별 합산(분류에 맞는 전체 상품 가격 합산)
		 *   maxProductName -> 최고 매출의 상품명
		 *   minProductName -> 최소의 매출 상품명
		 * */
		
		ProductSales pro = new ProductLease();
		pro.setProductSale(productSaleList);
		System.out.println(pro.quarterSum());
		System.out.println(pro.maxProductName());
		System.out.println(pro.minProductName());

	}
	
	/**
	 * 디비에서 상품 판매 및 임대 목록 가지고 온다는 가정
	 * @return List<ProductDto>
	 */
	public static List<ProductDto> getPoductList(){
		
		List<ProductDto> productSaleList = new ArrayList<ProductDto>();
		ProductDto pDto = null;
		pDto = new ProductDto();
		pDto.setPrice(50000);
		pDto.setProductName("임대상품A");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(60000);
		pDto.setProductName("임대상품B");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(30000);
		pDto.setProductName("임대상품C");
		pDto.setProductType("임대");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(15000);
		pDto.setProductName("판매상품A");
		pDto.setProductType("판매");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(21000);
		pDto.setProductName("판매상품B");
		pDto.setProductType("판매");
		productSaleList.add(pDto);
		pDto = new ProductDto();
		pDto.setPrice(24000);
		pDto.setProductName("판매상품C");
		pDto.setProductType("판매");
		productSaleList.add(pDto);	
		
		return productSaleList;
	}

}

 

+ Recent posts