728x90
반응형
이번에는 자바에서 메소드를 만들고 사용하는 내용을 다뤄보려 한다.
오늘은 내가 수업 때 사용한 자바 코드로 내용을 대체하려 한다. 각 문장마다 주석을 달아두어 이해하기에 큰 어려움을 없을 것이다.
Main.java
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
//학생 성적 관리 프로그램
//[이름, 국어, 영어, 평균]
String name;
int kor;
int eng;
double aver;
name = "sam";
kor = 80;
eng = 70;
aver = (double)(kor+eng)/(double)2;
//각각의 값을 저장하는 변수들을 개별로 만들면 관리도 어렵고 작성도 어려움
//서로 연관된 데이터를 하나의 변수에 모두 담아서 관리
//하지만 4개의 데이터를 한 번에 저장하는 자료형은 없음
//따라서 4개를 한 번에 저장하는 새로운 변수의 자료형을 설계해서 사용
//개발자가 정의하는 새로운 자료형을 만들기 위한 문법 - class
//새로운 class는 별도의 .java에 만들 것을 권장
//새로 설계한 Student class를 사용
Student stu = new Student();
stu.name = "sam";
stu.kor = 80;
stu.eng = 70;
stu.aver = (double)(stu.kor + stu.eng) / 2;
System.out.println(stu); //참조변수를 출력하라고 하면 println() method는 자동으로 객체의 .toString()을 발동
//[클래스명@해시코드]가 출력됨 -- 객체의 정보
System.out.println("이름 : " + stu.name);
System.out.println("국어 : "+ stu.kor);
System.out.println("영어 : " + stu.eng);
System.out.println("평균 : " + stu.aver);
//또 다른 학생이 있다면 두 번째 객체만 생성
Student stu2 = new Student();
stu2.name = "robin";
stu2.kor = 60;
stu2.eng = 50;
stu2.aver = (double)(stu2.kor + stu2.eng)/2;
//이런 식으로 객체의 멤버값들을 하나씩 출력하려하니 번거로움과 실수의 여지가 있다
//클래스 안에 본인 멤버변수를 제어하는 함수들을 같이 설계하는 것이 일반적
stu2.output(); //메소드 호출
Student stu3 = new Student();
stu3.name = "kim";
stu3.kor = 50;
stu3.eng = 90;
//평균 값을 넣는 기능도 짜증
stu3.calAverage();
stu3.output();
//객체지향프로그래밍에서 사용할 여러 기능들을 미리 클래스에서 메소드로 만들어 놓으면 코드가 훨씬 간결해지고 편해짐
Student stu4 = new Student();
stu4.output();
}
}
Student.java
public class Student {
//연관있는 데이터들을 저장할 변수를 정의
// field
String name;
int kor;
int eng;
double aver;
//본인의 멤버변수값들을 출력해주는 메소드를 설계하면 더 편하게 사용 가능
// method를 만드는 문법은 c언어와 동일
void output() {
System.out.println("이름 : " + name);
System.out.println("국어 : " + kor);
System.out.println("영어 : " + eng);
System.out.println("평균 : " + aver);
System.out.println();
}
//즉, 클래스로 만든 객체의 기능을 만드는 문법이 method
//평균 값을 계산하는 method도 추가
void calAverage() {
aver = (double)(kor+eng)/2;
}
}
사실, Student 클래스에 ouput()메소드가 Main class의 stu2 변수를 만들기 전에는 없었다.
그렇게 되면 Main 클래스에서 계속해서 Student 클래스의 멤버 변수를 불러와 직접 출력해야하는 번거로움이 있었기 때문에
Student 클래스에 output()과 calAverage()라는 메소드를 추가한 것이다.
이렇게 각 클래스에서 본인의 멤버 값으로 각자의 기능을 만들어 사용하는 것이 객체 지향 프로그래밍의 취지에 더 알맞지 않겠는가.
728x90
반응형
'Language > Java' 카테고리의 다른 글
자바의 변수 종류 (0) | 2022.03.25 |
---|---|
자바에서의 메소드 - 2 (0) | 2022.03.22 |
자바의 패키지 (0) | 2022.03.07 |
자바의 클래스 소개 (0) | 2022.03.02 |
자바의 배열(Array) (0) | 2022.02.23 |