본문 바로가기
카테고리 없음

캡슐화에 관한 고찰

by 차리하루일기 2024. 9. 10.
#Getter, Setter

캡슐화 encapsulation 

객체 지향 프로그래밍에서 다음 2가지 측면이 있다. 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고,

실제 구현 내용 일부를 외부에 감추어 은닉한다. 

 

?????? 뭐라는건가 싶다 ??????

 

다음 학생성적관리를 자바 코드로 짜보자

성적관리는 은닉이 필요하기에 적합하다고 판단했다.

학생 클래스를 생성해 보자

public class Student { #인스턴스 변수
	private static int serialNum = 0;  #모든 Student 객체에서 공유되는 학생 ID를 위한 정적 변수
	private int studentId;             #개별 학생의 고유 ID
	private int grade;                 #학년
	private int classNum;              #반 번호
	private String name;               #학생 이름
	private int kor, eng, math;        #국어, 영어, 수학 점수
# 생성자 -/ 이름으로만 생성, 아이디만 증가, 나머지 고정 처리 
# 점수는 기본 값 으로 0 처리 
public Student(String name) {
		this.grade = 1;         #학년을 1로 고정
		this.classNum = 1;      #반 번호를 1로 고정
		serialNum++;            #serialNum을 1 증가시켜 학생 ID 부여
		this.studentId = serialNum;  #증가된 serialNum을 studentId에 할당
		this.name = name;       #입력된 이름으로 이름을 설정
		this.kor = 0;           #국어 점수 기본 값 0
		this.eng = 0;           #영어 점수 기본 값 0
		this.math = 0;          #수학 점수 기본 값 0
	}
# 학생 정보 출력 메서드 
public void printInfo () {
	sout() .....
# Getter, Setter
public int getStudentId(){   # getStudentId() : sutudntID를 반환한다. 
		#학생 고유의 ID를 외부에서 읽을 수 있게.
		return studentId;
}
public String getName(){   # getname() : name을 반환한다. 
		return name;
}       
public int getKor(){
		return kor;
}      
public void setKor(int kor) { # 국어 성적을 설정. 
			# 외부에서 전달 받은 kor 값을 해당 객체의 kor 변수에 할당한다.
		this.kor = kor;
}

 

 

이걸 main 클래스에서 student 클래스 활용할 수 있다.

public class Main {
    public static void main(String[] args) {
    
    #학생 객체 생성
    Student student1 = new Student("홍길동");
    Student student2 = new Student("김철수");
    
    #성적 설정
    student1.setKor(85);
    student1.setEng(90);
    student1.setMath(95);

    student2.setKor(75);
    student2.setEng(80);
    student2.setMath(85);
        
    #학생 정보 출력
    student1.printInfo();
    student2.printInfo();
    }
}

 

이런식으로 student 클래스를 캡슐화 해서 main 클래스에서 사용할 수 있다.

 

#여기서 잠깐 기본기가 헷갈리더라. 

함수와 메서드의 차이

함수(function) : 주어진 입력 값을 받아 결과를 반환하는 코드 조각을 말한다. 함수 객체에 소속되지 않으며, 독립적으로 동작할 수 있다.

메서드(Method) : 메서드는 클래스나 객체에 속한 함수이다. 메서드는 해당 객체의 데이터를 처리하거나 해당 객체의 상태를 변화시키는 역할을 한다. JAVA에서는 메서드가 클래스  안에 속해 있으며 특정 객체를 기반으로 동작한다.

 

setkor(int kor) / getkor()와 같은 코드는 모두  student 클래스에 속한 메서드이다.