20211015

·새로운 교수님과 새로운 시작

-새로운 교수님이 오셨다. 현업에서 굉장히 오래 계시던 분이셨고, 앞서 참관했던 수업을 담당하셨던 교수님이셨다. 성격이 굉장히 좋으셨고, 되게 꼼꼼하게 또, 빠르고 정확하게 수업을 진행하셨다. 개인적으로 수업 방식이 굉장히 마음에 들어서 잠깐 들었는데도 빠지는 느낌이었다. 집에서 하는 날이 많았는데, 앞으로는 진짜 빠지지 않고 내가 나가는 날에는 학원을 나가게 될 것 같다.

·프로젝트를 위한 버전 통일

-기존의 교수님은 jdk 16.0버전을 사용하셨다. 가장 최근껄로 써보자고 하시면서 그냥 신경쓰지 말고 받아서 쓰자고 하셨는데, 새로오신 교수님은 앞으로 사용할 프로그램과도 맞으면서 반 전체가 프로젝트를 할 때 문제가 발생하지 않도록 버전을 맞추자고 하셨다. 그래서 기존의 jdk를 삭제하고 8.0버전을 받아서 환경변수 설정을 해주고, 이클립스도 Enterprise 버전으로 새로 받았다. 이클립스는 버전별로 따로 관리가 가능해서 여러 버전을 받아도 된다고 하셨다. 실제로 기업마다 다른 버전을 쓰기 때문에 현업에 간다면 이클립스를 한 폴더에 다 넣어서 버전별로 따로 폴더를 만들어 사용하길 권장하셨다.

·더 구체적인 수업

-사실 기존의 교수님은 아직 모르는게 너무 많은데 지나치게 구체적인 내용을 알려주시는 것을 지양하셨다. 물론 그게 맞을 수도 있다. 그러나 이번 교수님은 아직은 이해를 못하더라도 꼼꼼하게 다 들어보고 나중에 또 들을 때 이해하길 권장하시는 느낌이었다. 구체적으로 세세하게 다 알려주셔서 기존에 "왜 저게 저렇지?"했던 궁금증도 풀렸다. 그래서 사실 이건 가르치시는 분 스타일이고, 나의 스타일의 문제지만, 저번 교수님보다는 더 내게 맞는 수업 방식이라 생각했다. 아마 나와 정반대로 느끼는 분들도 계실 것이다. 그렇다고 내가 전 교수님이 별로였다는 것은 아니다. 사람마다 스타일이 다르고 선호의 차이가 있을 뿐이다.

·java 복습

-그런 맥락에서 java를 다시 복습하기로 하셨다. 애초에 이번달말까지는 java를 하는 일정으로 커리큘럼이 짜여 있었고, 전 교수님이 어떤걸 가르치셨고 어떤 것을 안했는지 확실하지 않아서 일단 복습하면서 아는 부분은 빠르게 지나가는 식으로 진행하실 것 같다. 오늘은 기초적인 부분부터 시작해서 if문까지 진행해봤다.

-수업 시간에 점수를 입력받아 점수의 범위에 따라 A,B,C가 출력되는 코드를 작성해보라고 하셨다. 대신 이번엔 조금 다른 것이, 98이상의 점수면 A가 아니라 A+가 되도록 코드를 작성하라고 하셨다. 90점 이상 94이하면 A-, 나머지 90점대는 A0가 되도록...

-사실 처음엔 이렇게 생각했다. '그냥 if문 하나로 else if를 첫 구간부터 끝 구간까지 반복하면 되겠다.' 그런데 그러면, 너무 고려할 사항이 많았다. 그래서 바깥쪽 if 문으로 점수를 90점 이상, else if로 80점 이상 else로 나머지는 C가 되게 만들고, 첫 if와 else if 안에서 다시 +,-,0를 나누는 작업을 하도록 작성했다.

import java.util.Scanner;

public class Sample1015_2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("점수를 입력하세요.> ");
		int inputNum = sc.nextInt();
		MethodGather mg = new MethodGather();
		String grade= mg.grade(inputNum);
		
		System.out.println("당신의 점수는 "+inputNum+"입니다.");
		System.out.println("당신의 학점은 "+grade+"입니다.");
	}

}

class MethodGather{

	public String grade(int var) {
		String grade="";
		if(var>=90 && var<=100) {
			if(var>=98) {
				grade = "A+";
			}else if(var>=90 && var<=94) {
				grade = "A-";
			}else {
				grade = "A0";
			}
			
		}else if(var>=80 && var<90) {
			if(var>=88) {
				grade = "B+";
			}else if(var>=80 && var<=84) {
				grade = "B-";
			}else {
				grade = "B0";
			}
		}else {
			grade = "C";
		}
		return grade;
	}
}

위와 같이, 클래스를 진행했다. 단, 클래스를 나눈 것은 main의 볼륨을 최대한 줄이면 좋다는 전 교수님의 가르침 때문이 이런 방식으로 진행했다. 그런데, 이것도 사실 뭔가 맘에 들지 않았다. 왜냐? 나는 더 구분되는 기능들로 나눈 후에, 각각 기능을 합쳐서 해당 코드가 진행되길 바랐다.

import java.util.Scanner;

/**
 * @author user
 *
 */
public class SampleSungjuk_more {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("점수를 입력하세요.> ");
		int inputNum = sc.nextInt();
		MethodGather2 mg = new MethodGather2();
		String grade= mg.grade(inputNum);
		
		System.out.println("당신의 점수는 "+inputNum+"입니다.");
		System.out.println("당신의 학점은 "+grade+"입니다.");
	}

}

class MethodGather2{

	//A,B,C를 판단하는 메소드
	public String grade(int var) {
		String grade="";
		if(var>=90 && var<=100) {
			grade = "A";
			grade= this.gradePlusMinus(var, grade);
		}else if(var>=80 && var<90) {
			grade = "B";
			grade = this.gradePlusMinus2(var, grade);
		}else {
			grade = "C";
		}
		return grade;
	}
	
	//A 학점을 받은 학생의 구체적 학점 범위 판별하는 메소드
	public String gradePlusMinus(int var, String grade) {
		if(var>=98) {
			grade += "+";
		}else if(var>=90 && var<=94) {
			grade += "-";
		}else {
			grade += "0";
		}
		return grade;
	}
	
	//B 학점을 받은 학생의 구체적 학점 범위 판별하는 메소드
	public String gradePlusMinus2(int var, String grade) {
		if(var>=88) {
			grade += "+";
		}else if(var>=80 && var<=84) {
			grade += "-";
		}else {
			grade += "0";
		}
		return grade;
	}
}

그래서 바로 진행한 코드가 바로 위의 것이다. ABC를 판별하는 코드에 또 if문을 쓰지 않고, 메소드를 사용했다. 그리고 그 메소드는 또 if문을 사용해서 +,-,0를 grade의 문자열에 추가해주는 방식이다. 이렇게 하면 더 구체적 파트로 나눠서 개인적으로는 더 좋았다. 단 여기서 몇가지 필요 없는 부분이 있었다. 보면 +,-,0를 판단하는 메소드들에서 else if의 조건식 부분에var>=90 && var<=94이렇게 되어 있는데, 앞의 var>=90은 사실 필요가 없다. 왜냐? 이미 위쪽에서 메소드를 쓴 시점엔, var은 90점 이상의 범위에서 온 것이 확실하기 때문이다. 만약 90점 이상이 아니라면 해당 메소드쪽으로 오지도 못한다. 즉, 앞의 조건은 무조건 참일 수밖에 없다. 사실상 필요가 없는 부분을 굳이 추가해준 것이기 때문에 앞의 부분은 필요가 없다. 이 사실을 정말 모르고 있다가 교수님이 진행한 코드를 보고 깨달았다. 역시 배움엔 끝이 없다.

-교수님이 진행하신 코드는 문자를 받는 변수를 두 개 설정하신 것 외에는 크게 다른 점이 없다. 그런데 +,-,0을 받는 문자열 변수에 처음엔 공백을 넣으시지 않고, 0의 값을 넣어서 불필요한 반복을 줄이셨다. 그 부분이 굉장히 배울 점이라고 생각했다. 처음에 공백을 넣으면 0이 되는 조건에서 또 0을 넣어주는 코드를 작성해야 한다. 그러나 처음부터 0이라면? 0을 넣어주는 과정을 다 생략해도 된다. 어차피 이미 0이기 때문에... 이런게 바로 프로그래머로서 경력과 노하우가 아닐까 싶다. 하루의 수업이었지만 그런 점들이 여실히 보였다.

-사실 나는 A 학점을 받은 학생의 구체적 학점 범위 판별하는 메소드와 B 학점을 받은 학생의 구체적 학점 범위 판별하는 메소드를 하나의 메소드로 묶어서 동일한 메소드를 사용하길 바랐다. 그러나 그게 생각보다 쉽지 않았다. 왜냐면 조건식에 들어가는 일의 자리 숫자는 4와 8로 같지만 십의 자리가 달라지기 때문이다. 그래서 처음에 "4"와 "8"을 가진 변수를 선언해주고, A학점이면 십의자리에 오는 변수가 "9"가되고, B학점이면 십의 자리에 오는 변수가 "8"가 되게 한 후에, "9"+"4"의 경우엔 문자열끼리의 합이기 때문에 "94"가 되는 것을 생각해서, 먼저 문자열 94로 만들고, 해당 문자열을 숫자로 바꾸는 Integer.parseInt(str)을 사용해서 다시 숫자로 만든 후에 해당 숫자로 범위를 줘서 동일한 메소드를 쓸 수 있게 하려고 했다. 그런데 작성하다가 보니 너무 지나치게 길어지고 너무 많은 메소드가 쓰여서 한참을 고민하다가 포기했다. 내일은 진짜 각잡고 내가 원하는 방향으로 해당 코드를 다시 진행해보려고 한다. 오늘은 이미 한 것들이 계속 머릿속에 맴돌아서 잠시 내려놓기로 했다.

·잘 맞는 교수님 스타일, 기대되는 수업

-다행히도 잘 맞는 스타일의 교수님이 오신 것 같다. 앞으로의 수업이 더 기대가 된다. 앞으로의 수업은 진짜 빠듯할 것이라고 하셨다. 팀도 결정해주신다고 하셨다. 그래서 사실 더 긴장되는 부분도 있다. 특히 어떤 한 분과는 정말 같은 팀이 되지 않았으면 하는데, 그게 마음처럼 될 지 의문이다. 그래도 앞으로도 잘 적응하고 잘 배워서 새로운 길을 잘 갈 수 있으면 한다. 운동도 영어공부도 꾸준히!!!! 아자아자!!

좋은 웹페이지 즐겨찾기