반응형
- C16캡슐화
- C1601캡슐화_개념
- C1601개념01캡슐화
package C1601캡슐화_개념;
class Test01 {
// 접근제어자 : public, protected(추후 설명), default, private
//캡슐화란
//private=> 접근제어자를 사용해서. 코딩을 좀더 안전하게 관리하는것
//private을 사용하면 이 안에서만 사용할 수 있다.
//변수에 대해 제어를 해주어야 한다.
//private : 안에서만 사용 가능
//public : 어디서든 사용 가능
//없음 : 에매한것 / 사용x
private int a;
private int b;
// 접근제어가 없는 것을 default 라고 부른다.
// 지금까지는 접근제어자를 사용하지 않았지만, 정확하게 명시해주는 것이 좋다.
// 이제부터 아무것도 안적는것은 권장하지않는다.
int c; //사용하면 안된다.
// public은 어느 클래스에서도 접근가능한 것
public int d;
}
public class C1601개념01캡슐화 {
public static void main(String[] args) {
Test01 t = new Test01();
// 1. private을 붙인 변수는 클래스 내부에서만 사용이 가능하다.
// 2. 다른 클래스에서는 사용할 수 없다.
// The field Test01.a is not visible
// t.a = 10; // 에러
// t.b = 20; // 에러
t.c = 30;
//자바에서는 금지
//.(점) 찍어서 바로 정보를 넣는것
t.d = 40;
}
}
- C1601개념02캡슐화
package C1601캡슐화_개념;
class Student1 {
//private으로 막은 변수를 정보를 어떻게 넣느냐?
//일일이 set함수. get함수를 만들어 주어야 한다.
private String name;
private int age; //본 데이터는 private으로 막는다.
public Student1(String name, int age){
this.name = name;
this.age = age;
}
public void setName(String name) { //public을 쓴다.
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
//----------------------------------------------
class Student2{
public String name;
public int age;
}
public class C1601개념02캡슐화 {
public static void main(String[] args) {
Student1 hgd = new Student1("홍길동", 11);
System.out.println(hgd.getName());
System.out.println(hgd.getAge());
//함수형으로 쓸 수 밖에 없다.
hgd.setName("이만수");
hgd.setAge(20);
System.out.println(hgd.getName());
System.out.println(hgd.getAge());
// hgd.name = "aaa"; 직접접근을 불가하다.
// 아래가 훨씬 편한데 왜 위와 같이 사용할까? 다음에 설명
Student2 s2 = new Student2();
s2.name = "이영희";
s2.age = 10;
//위처럼 쓰는것은 막아야 한다.
}
}
- C1601개념03캡슐화
package C1601캡슐화_개념;
class Product { //상품
private String regiDate;
private String name;
private int price;
public Product (String date , String name , int price){
//상품의 제조년월일 => data
this.regiDate = date;
this.name = name;
this.setPrice(price);
}
public void setPrice(int price) {
this.price = price;
}
public String getRegiDate() {
return regiDate;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
public class C1601개념03캡슐화 {
public static void main(String[] args) {
// [get set의 활용법]
// 위와같이 set메서드는 price만 만들어놓고 ,
// 제조년과 상품이름의 set메서드를 만들지않으면
// 제조년과 상품이름은 처음 저장한 이후 변경이 절대로 불가능하다.
Product pr = new Product("20210420", "김치", 2000);
System.out.println(pr.getName());
System.out.println(pr.getRegiDate());
System.out.println(pr.getPrice());
System.out.println("-------------------------------");
pr.setPrice(1500);
System.out.println(pr.getName());
System.out.println(pr.getRegiDate());
System.out.println(pr.getPrice());
}
}
- 왜 막을까?
- 상품의 제조년월일 => data
- 만약에 data의 set을 만들어 버리면.
- 상품의 날짜가 변경될 수 있다.
- 그러면 큰일 난다.
- 그래서 상품의 set을 없애버리는 것이다.
- 그러면 원초적으로 data의 값을 변경하는게 불가능하다.
- 만약 data의 고쳤다고 한다면
- 범인 => 개발자 or 스티커 붙이는 사람
- 상품의 보안을 강화하기 위해서 사용하는것이다.
- 이래서 자바스크립트가 쓸모가 없다.
- 그래서 자바스크립트를 생으로 안 쓰고. 타입스크립트로 한다.
- let => int String
- => private
- 근데 자바스크립트가 금방 만들꺼래.
class Product { //상품
private String regiDate;
private String name;
private int price;
public Product (String date , String name , int price){
//상품의 제조년월일 => data
this.regiDate = date;
this.name = name;
this.setPrice(price);
}
- C1601개념04산업기사기출_암기
package C1601캡슐화_개념;
import java.util.Vector;
class Member {
private int custno; // 회원번호
private String custname; // 회원성명
private String phone; // 회원전화
private String address; // 통신사
private String joindate; // 가입일자
private String grade; // 고객등급
private String city; // 거주도시
public Member(int custno, String custname, String phone, String address, String joindate, String grade, String city) {
this.custno = custno;
this.custname = custname;
this.phone = phone;
this.address = address;
this.joindate = joindate;
this.grade = grade;
this.city = city;
}
public int getCustno() { return custno; }
public void setCustno(int custno) { this.custno = custno; }
public String getCustname() { return custname; }
public void setCustname(String custname) { this.custname = custname; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getJoindate() { return joindate; }
public void setJoindate(String joindate) { this.joindate = joindate; }
public String getGrade() { return grade; }
public void setGrade(String grade) { this.grade = grade; }
public String getCity() { return city; }
public void setCity(String city) { this.city = city; }
}
class Money{
private int custno; // 회원번호
private int saleno; // 판매번호
private int pcost; // 단가
private int amount; // 수량
private int price; // 가격(매출)
private String pcode; // 상품코드
private String sdate; // 판매일자
public Money() {}
public Money(int custno, int saleno, int pcost, int amount, int price, String pcode, String sdate) {
this.custno = custno;
this.saleno = saleno;
this.pcost = pcost;
this.amount = amount;
this.price = price;
this.pcode = pcode;
this.sdate = sdate;
}
public int getCustno() { return custno; }
public void setCustno(int custno) { this.custno = custno; }
public int getSaleno() { return saleno; }
public void setSaleno(int saleno) { this.saleno = saleno; }
public int getPcost() { return pcost; }
public void setPcost(int pcost) { this.pcost = pcost; }
public int getAmount() { return amount; }
public void setAmount(int amount) { this.amount = amount; }
public int getPrice() { return price; }
public void setPrice(int price) { this.price = price; }
public String getPcode() { return pcode; }
public void setPcode(String pcode) { this.pcode = pcode; }
public String getSdate() { return sdate; }
public void setSdate(String sdate) { this.sdate = sdate; }
}
class Manager{
private Vector<Member> memberList = new Vector<Member>();
private Vector<Money> moneyList = new Vector<Money>();
private Vector<Result> resultList = new Vector<Result>();
public void init() {
memberList.add(new Member(100001, "김행복", "010-1111-2222", "SK", "20151202", "A", "01"));
memberList.add(new Member(100002, "이축복", "010-1111-3333", "SK", "20151206", "B", "01"));
memberList.add(new Member(100003, "장믿음", "010-1111-4444", "SK", "20151001", "B", "30"));
memberList.add(new Member(100004, "최사랑", "010-1111-5555", "SK", "20151113", "A", "30"));
memberList.add(new Member(100005, "진평화", "010-1111-6666", "SK", "20151225", "B", "60"));
memberList.add(new Member(100006, "차공단", "010-1111-7777", "SK", "20151211", "C", "60"));
moneyList.add(new Money(100001, 20160001, 500, 5, 2500, "A001", "20160101"));
moneyList.add(new Money(100001, 20160002, 1000, 4, 4000, "A002", "20160101"));
moneyList.add(new Money(100001, 20160003, 500, 3, 1500, "A008", "20160101"));
moneyList.add(new Money(100002, 20160004, 2000, 1, 2000, "A004", "20160102"));
moneyList.add(new Money(100002, 20160005, 500, 1, 500, "A001", "20160103"));
moneyList.add(new Money(100003, 20160006, 1500, 2, 3000, "A003", "20160103"));
moneyList.add(new Money(100004, 20160007, 500, 2, 1000, "A001", "20160104"));
moneyList.add(new Money(100004, 20160008, 300, 1, 300, "A005", "20160104"));
moneyList.add(new Money(100004, 20160009, 600, 1, 600, "A006", "20160104"));
moneyList.add(new Money(100004, 20160010, 3000, 1, 3000, "A007", "20160106"));
}
public Vector<Member> getMemberList() { return memberList; }
public Vector<Money> getMoneyList() { return moneyList; }
public Vector<Result> getResultList() { return resultList; }
}
class Result {
private int custno;
private String custname;
private int price;
public int getCustno() { return custno; }
public void setCustno(int custno) { this.custno = custno; }
public String getCustname() { return custname; }
public void setCustname(String custname) { this.custname = custname; }
public int getPrice() { return price; }
public void setPrice(int price) { this.price = price; }
public void printInfo() {
System.out.println(custno + "\t" + custname + "\t" + price);
}
}
public class C1601개념04산업기사기출_암기 {
public static void main(String[] args) {
Manager mg = new Manager();
mg.init();
/*
[문제] 아 래와 같이 출력 매출(price) 의 합계 + 내림차순
100001 김행복 8000
--------------------------------
100004 최사랑 4900
--------------------------------
100003 장믿음 3000
--------------------------------
100002 이축복 2500
--------------------------------
*/
Vector<Member> memberList = mg.getMemberList();
Vector<Money> moneyList = mg.getMoneyList();
Vector<Result> resultList = mg.getResultList();
for(int i=0; i<memberList.size(); i++) {
Member member = memberList.get(i);
int total = 0;
for(int j=0; j<moneyList.size(); j++) {
Money money = moneyList.get(j);
if(member.getCustno() == money.getCustno()) {
total += money.getPrice();
}
}
System.out.println(total);
Result rs = new Result();
rs.setCustno(member.getCustno());
rs.setCustname(member.getCustname());
rs.setPrice(total);
resultList.add(rs);
}
// 정렬
for(int i=0; i<resultList.size(); i++) {
for(int j=i; j<resultList.size(); j++) {
if(resultList.get(i).getPrice() < resultList.get(j).getPrice()) {
Result temp = resultList.get(i);
resultList.set(i, resultList.get(j));
resultList.set(j, temp);
}
}
}
for(int i=0; i<resultList.size(); i++) {
if(resultList.get(i).getPrice() > 0) {
resultList.get(i).printInfo();
}
}
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
C18상속 (1) | 2025.07.17 |
---|---|
C17스태틱 (2) | 2025.07.11 |
C1404콜렉션벡터_개념 (0) | 2025.07.09 |
C14콜렉션 => C1401가변배열_개념 (0) | 2025.07.07 |
C13파일입출력 (0) | 2025.07.07 |