728x90
이번주는 Collection 프레임워크도 알아보고 객체지향에 대해서도 알아봤다.
SOLID
- Single responsibility principle(단일 책임 원칙)
- 한 클래스는 하나의 책임만 가져야 한다.
- 하나의 역할을 한다.
- 클래스가 변경되어야 하는 이유가 하나만 있어야 함을 의미합니다.
- Open/closed principle(개방 폐쇄 원칙)
- 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장을 위해 열려 있어야 하지만 변경을 위해서는 닫혀 있어야 한다.
- 개방폐쇄 원칙 기능은 유지보수를 하는 과정이 쉽게 이루어져야한다.
- 기존의 코드를 변경하지 않고 시스템에 새로운 기능을 추가할 수 있도록 해야 함을 의미합니다.
- Liskov substitution principle(리스코프 치환 원칙)
- Interface segregation principle(인터페이스 분리 원칙)
- 클라이언트가 사용하지 않는 메서드에 의존하지 않도록 해야 함을 의미합니다.
- 인터페이스가 특정 기능에 집중된 작고 간결한 것이어야 함을 의미합니다.
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- Dependency inversion principle(의존관계 역전 원칙)
- 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
이번주는 로그인 프로그램 만들기를 해보았당
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
static HashMap<String,Member> repository = new HashMap<>();
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
while (true){
try {
int order = start();
switch (order){
case 1:
if(login()){
continue;
};
break;
case 2:
memberShip();
break;
case 3:
SystemOff();
break;
default:
System.out.println("번호를 다시 확인해주세요.");
}
}
catch (NumberFormatException exception){
System.out.println("번호로 입력해주세요.");
}
}
}
static public int start() throws IOException {
StringBuilder sb = new StringBuilder();
sb.append("멋쟁이사자처럼 로그인 프로그램\n")
.append("\n")
.append("==================\n")
.append("1. 로그인\n")
.append("2. 회원가입\n")
.append("3. 종료\n")
.append("==================\n")
.append("어떤걸 진행하시겠습니까? :");
System.out.print(sb);
return Integer.parseInt(br.readLine());
}
static public boolean login() throws IOException {
System.out.print("아이디를 입력하세요 : ");
String id = br.readLine();
System.out.print("비밀번호를 입력하세요 : ");
String password = br.readLine();
System.out.println();
Member member = repository.get(id);//회원 정보 가져오기
if(member!=null){
if(id.equals(member.id) && password.equals(member.password)){
System.out.println(id+" 회원 성공적으로 로그인하였습니다.");
SystemOff();
}
else {
System.out.println("비밀번호가 틀렸습니다.");
}
}
else {
System.out.println("없는 회원입니다.\n");
}
return false;
}
static public void memberShip() throws IOException {
while (true){
System.out.print("아이디를 입력하세요 : ");
String id = br.readLine();
if(repository.get(id)!=null){
System.out.println("이미 있는 아이디입니다.");
System.out.println("다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :");
String order = br.readLine();
if(order.equals("y")){
continue;
}
else if (order.equals("n")) {
return;
}
else {
System.out.println("다시 입력해주세요.");
}
}
System.out.print("비밀번호를 입력하세요 : ");
String password = br.readLine();
System.out.println();
Member member = new Member(id,password);
repository.put(id,member);
System.out.println("정상적으로 회원가입 되었습니다.");
break;
}
}
static public void SystemOff(){
System.out.println("프로그램이 종료됩니다.");
System.exit(0);
}
}
class Member{
String id;
String password;
public Member(String id, String password) {
this.id = id;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
728x90
'LikeLion🦁' 카테고리의 다른 글
감자의 MT 참여하기 (3) | 2023.05.16 |
---|---|
우리 아이가 사고쳤어요~ (0) | 2023.05.09 |
사자가 된 감자 4주차 (1) | 2023.05.07 |
사자가 된 감자 3주차 (2) | 2023.05.02 |
사자가 된 감자 1주차 (0) | 2023.04.05 |