-
Java Study [2022-08-05] - 객체지향프로그래밍(static, singleton 문제 풀기)백엔드 2022. 8. 6. 13:00
📌 Java Study
🔸 2022-08-05 금요일
[클래스와 객체]
1. static & singleton 코딩 예제
static
과singleton pattern
문제 : 카드 회사가 있다. 카드 회사는 유일한 객체이고, 이 회사에서는 카드를 발급하면 항상 고유번호가 자동으로 생성된다. 10001부터 시작하여 카드가 생성될 때마다 10002, 10003 식으로 증가된다. 다음 코드가 수행 되도록 Card 클래스와 CardCompany 클래스를 구현하라.
public class CardCompanyTest { public static void main(String[] args) { CardCompany company = CardCompany.getInstance(); // 싱글톤 패턴 Card myCard = company.createCard(); // 메서드에서 Car 생성 Card yourCard = compapny.createCard(); System.out.println(myCard.getCardNumber()); // 10001 출력 System.out.println(yourCard.getCardNumber()); // 10002 출력 } }
- Card 클래스
package card; public class Card { private int cardNumber; private static int serialNum = 10000; Card() { serialNum++; cardNumber = serialNum; } public int getCardNumber() { return cardNumber; } public void setCardNumber(int cardNumber) { this.cardNumber = cardNumber; } }
Card 클래스에
cardNumber 변수
를private
로 int 타입 생성 => 외부에서 함부로 바꾸지 못함고유 번호가 10001 부터 시작해야 하니 기본
serialNum = 10000
으로static
설정Card 메서드를 호출할 때마다 고유번호 serialNum의 값을 증가시키고, 증가된 값이 카드 번호(유지)
cardNumber 변수
의 getter, setter 추가
- CardCompany 클래스
package card; public class CardCompany { private static CardCompany instance = new CardCompany(); private CardCompany() {} public static CardCompany getInstance() { if(instance == null) instance = new CardCompany(); return instance; } public Card createCard() { Card card = new Card(); return card; } }
카드 회사
가유일한 인스턴스
함부로 변경이 되면 안되므로
private
설정단 하나의 값을 가져야 하므로
static
private CardCompany() {}
=>private
이므로 해당 클래스에서만 생성 가능객체를 생성하지 않고, 해당 인스턴스를 호출하기 위해
static
으로CardCompany getInstance
선언Card createCard()
=> 카드 회사에서 카드 발급, Card 생성
🔖 Eclipse 실습
🔖 Eclipse 출력 Console
'백엔드' 카테고리의 다른 글
Java Study [2022-08-07] - 객체지향프로그래밍(객체 배열, 복사) (0) 2022.08.08 Java Study [2022-08-06] - 객체지향프로그래밍(배열 기초 이론 및 예제) (0) 2022.08.07 Java Study [2022-08-04] - 객체지향프로그래밍(static, singleton) (0) 2022.08.05 Java Study [2022-08-03] - 객체지향프로그래밍(this, cooperation) (0) 2022.08.04 Java Study [2022-08-02] - 객체지향프로그래밍(정보 은닉) (0) 2022.08.03