줄기세포

[Basic] Java로 객체지향 프로그래밍(OOP)을 구현해보자. 본문

Java/기본(Basic)

[Basic] Java로 객체지향 프로그래밍(OOP)을 구현해보자.

줄기세포(Stem_Cell) 2020. 7. 16. 10:55

http:// https://novice-data.tistory.com/entry/Java-Basic-Array

위에 글을 읽고오시면 도움이 됩니다.

위에서 구현한 학생성적 출력을 OOP로 만들어 보려고 합니다.

 

 class = 설계도 / instance = 제품

class와 instance의 개념에 대한 많은 설명이 있지만, 저는 위의 설명이 가장 쉽게 이해가 됩니다.

 

StudentDTO class를 Oop 패키지 안에 만들고 field값을 만들어 주었습니다.

// StudentDTO Class

package Oop;

import java.io.Serializable;

public class StudentDTO implements Serializable {
	// Serializable 데이터 직렬화에 사용
	// 순서대로 읽음 (작성 순서대로)
	private String name;
	private int kor;
	private int eng;
	private int mat;
	private int phi;
    }

 

StudentTest class를 역시 Oop 패키지 안에 만들고, instance를 생성하고 학생의 성적을 입력해 보겠습니다.

// StudentTest Class

package Oop3;

public class StudentTest {
	public static void main(String[] args) {
		StudentDTO s1 = new StudentDTO();
		s1.setName("신이나");
		s1.setKor(100);
		s1.setEng(90);
		s1.setMat(80);
		s1.setPhi(70);
		//캡슐화
		System.out.println("이름\t국어\t영어\t수학\t철학");
		System.out.println(s1);
	}

}

에러가  발생합니다.

getter와 setter를 형성해주지 않아서 그렇습니다.

 

다시 StudentDTO class에 getter와 setter를 만들고

tostring을 만들어 줍니다. ( to string은 변수를 확인하기 위해서 stringtype으로 return하여 print하겠습니다.)

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getKor() {
		return kor;
	}
	public void setKor(int kor) {
		this.kor = kor;
	}
	public int getEng() {
		return eng;
	}
	public void setEng(int eng) {
		this.eng = eng;
	}
	public int getMat() {
		return mat;
	}
	public void setMat(int mat) {
		this.mat = mat;
	}
	public int getPhi() {
		return phi;
	}
	public void setPhi(int phi) {
		this.phi = phi;
	}
	@Override
	public String toString() {
		return name+"\t"+ kor +"\t"+ eng +"\t"+ mat +"\t"+ phi;
	}

자바이클립스의 generate getter and setter를 이용하시면 빠르고 편합니다.

출력을 하면

 

이번에 총점과 평균도 구하는 method를 구현하겠습니다.

StudentDTO toString method를 다음과 같이 변경하고

	@Override
	public String toString() {
		return name+"\t"+ kor +"\t"+ eng +"\t"+ mat +"\t"+ phi+ "\t" +
				getTotal() + "\t" + getAverage()+ "\t";
	}
    
    	private int getAverage() {
		return getTotal()/4;
	}
	private int getTotal() {
		// TODO Auto-generated method stub
		return getKor()+getEng()+getMat()+getPhi();
	}

총점과 평균을 계산하여 return하는 getter를 각각 생성해줍니다.

package Oop;

public class StudentTest {
	public static void main(String[] args) {
		StudentDTO s1 = new StudentDTO();
		s1.setName("신이나");
		s1.setKor(100);
		s1.setEng(90);
		s1.setMat(80);
		s1.setPhi(70);
		//캡슐화
		System.out.println("이름\t국어\t영어\t수학\t철학\t총점\t평균");
		System.out.println(s1);
	}

}

main method를 실행하면

아래와 같이 출력됩니다.

 

 

간단하게 OOP를 생성하는 방법을 알아보았습니다.

 

아래 풀 코드 복사하셔서 편하게 연습해보세요.

 

 

//StudentDTO Class

package Oop;

import java.io.Serializable;

public class StudentDTO implements Serializable {
	// Serializable 데이터 직렬화에 사용
	// 순서대로 읽음 (작성 순서대로)
	private String name;
	private int kor;
	private int eng;
	private int mat;
	private int phi;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getKor() {
		return kor;
	}
	public void setKor(int kor) {
		this.kor = kor;
	}
	public int getEng() {
		return eng;
	}
	public void setEng(int eng) {
		this.eng = eng;
	}
	public int getMat() {
		return mat;
	}
	public void setMat(int mat) {
		this.mat = mat;
	}
	public int getPhi() {
		return phi;
	}
	public void setPhi(int phi) {
		this.phi = phi;
	}
	@Override
	public String toString() {
		return name+"\t"+ kor +"\t"+ eng +"\t"+ mat +"\t"+ phi+ "\t" +
				getTotal() + "\t" + getAverage()+ "\t";
	}
	private int getAverage() {
		return getTotal()/4;
	}
	private int getTotal() {
		// TODO Auto-generated method stub
		return getKor()+getEng()+getMat()+getPhi();
	}
	
	
	
	
}
//StudentTest Class

package Oop;

public class StudentTest {
	public static void main(String[] args) {
		StudentDTO s1 = new StudentDTO();
		s1.setName("신이나");
		s1.setKor(100);
		s1.setEng(90);
		s1.setMat(80);
		s1.setPhi(70);
		//캡슐화
		System.out.println("이름\t국어\t영어\t수학\t철학\t총점\t평균");
		System.out.println(s1);
	}

}

 

'Java > 기본(Basic)' 카테고리의 다른 글

[Basic] Java로 Array 만들기, 출력하기, 행렬이용  (0) 2020.07.15
Comments