본문 바로가기
Back/Java

Day1_Java로 학점계산기 MVC 패턴으로 만들어보기

by uxia 2023. 5. 21.

저번주에 국비지원 수업에서 MVC 패턴을 활용해 프로그램을 만드는 팀프로젝트를 했었다.

사실 기초도 없는 상태에서 아무리 구글링을 해보고 GPT를 닥달해도 MVC 패턴을 온전히 이해하기는 힘들었다.

 

그냥 계속 손으로 쳐보면서 감으로 익히는 수밖에..🥹

 

정말 다행인 건 팀프로젝트를 하면서 Leader와 Puller, Follower의 역할이 정해져서
끌어주고 따라갈 수 있도록 시스템화 시켰다는 점과

첫 팀플 팀원들이 모두 능력 있고 인내심과 배려심이 좋은 분들이라는 점이다.

 

정말 하나를 알려주면 세 가지 질문을 하는 이 돌멩이를 잘 끌어주셔서 너무 다행이면서도 감사했다.

 

아무튼 MVC 패턴은 조만간 다시 공부해서 정리해볼 생각이다.


주말인 오늘은 Java 기초를 다시 공부하면서 if문, if else문 등을 배우는데

그냥 배우고 코드를 쳐보고 끝내는 게 아닌, 전에 배운 MVC 패턴을 활용해

학점 계산기를 만들어봤다.

 

일단 MVC에는 'Main', 'Model', 'Controller', 'View' 네 가지의 Class를 만들어줘야하기에

파일들을 만들고 Model Class에 학점 계산기 코드를 입력했다.

 

학점계산기Model
package practice;

public class 학점계산기Model {
		
	public void setScore(int score) {
	
		char grade;
		
		if (score >= 90) {
			grade = 'A';
		} else if (score >= 80) {
			grade = 'B';
		} else if (score >= 70) {
			grade = 'C';
		} else if (score >= 60) {
			grade = 'D';
		} else {
			grade = 'F';
		}
		
		System.out.println("당신의 학점은 " + grade + " 입니다.");
	}
	
}

학교에서는 저런 절대평가가 아니지만, 계산이 편하게 절대평가로 만들었다.

 

학점계산기View
package practice;

import java.util.Scanner;

public class 학점계산기View {
	
	int score;
	
	public void setScore() {
			Scanner scan = new Scanner(System.in);
			System.out.println("점수를 입력해주세요 : ");
		this.score = scan.nextInt();
	}
	
	public int getScore() {
		return this.score;
	}
	
}

 

학점계산기Controller
package practice;

public class 학점계산기Controller {
	
	학점계산기Model model = new 학점계산기Model();
	학점계산기View view = new 학점계산기View();
	int score;
	
	public 학점계산기Controller(학점계산기Model model, 학점계산기View view) {
		
		this.model = model;
		this.view = view;
		
	}
	
	public void setScore() {
		view.setScore();
	}
	
	public void getScore() {
		this.score = view.getScore();
	}
	
	public void setGrade() {
		model.setScore(this.score);
	}
	
}

 

학점계산기Main
package practice;

public class 학점계산기Main {
	public static void main(String[] args) {
		
		학점계산기View view = new 학점계산기View();
		학점계산기Model model = new 학점계산기Model();
		학점계산기Controller controller = new 학점계산기Controller(model, view);
		
		controller.setScore();
		
		controller.getScore();
		
		controller.setGrade();
		
	}
	
}

 

Console

위의 코드들을 Run 시켰을 때 결과는 이렇게 나온다!


누군가에게 설명을 해보라고 하면 아직 완벽하게 설명은 못한다.

나도 겨우 감만 익힌 상태라.

 

그치만 배운 걸 활용해서 새로 프로젝트를 만들어봤다는 거에 뿌듯하다!

 

오늘 하면서 느낀건, 이름은 영문으로 하는 게 좋다 들었는데, 한글로도 만들길래 그냥 한글로 했다가 후회했다.

불편하기도 불편한데 바로바로 안불러와진다고 해야하나..?

 

아무튼 오늘의 교훈 : Class Name은 영문으로 하자

 

'Back > Java' 카테고리의 다른 글

Day71_객체지향 복습_I 객체지향 개념  (0) 2023.10.31
Day70_for문 별찍기  (2) 2023.10.27
Day26_Java 메서드 정리  (0) 2023.06.17
Day25_Read 코드 작성  (0) 2023.06.15
Day3_IntelliJ IDEA JDK 업그레이드  (0) 2023.05.26