클래스다이어그램 작성법

Noome_·2022년 4월 25일
0
post-thumbnail

package com.kh.lee;

public class Person {

//fianl 과 static 은 https://blog.naver.com/goddlaek/220889229659  이 블로그를 참고하자.
	public static final String Name = "swy";
	private int age;
	
    //매개변수가 있는 생성자
	public Person(int age) {
		this.age = age;
		//age라는 값을 매개변수에 입력받아 필드의 this.age에 저장한다.
	}
	
    
    //getter
	//final필드가 있어도 getter 만드는 건 상관은 없음
	public int getAge() {
		return age;
	}
	
	
	//setter
	//!!!!!!!!!! int age의 값을 저장할 공간을 
    //this.age=age;를 써서 저장공간을 마련해주기 때문에 꼭 작성해야한다 !!!!!!!!!!!
    //매개변수의 age는 지역변수에서의 age고 
    //this.age의 age는 전역변수의 age(private int age의 age)임을 유의할 것!!
	public void setAge(int age) {
		this.age = age;
	}
	
    
    //getter
	//public 에 static이기 때문에 굳이 필요는 없지만, 작성 가능 
 //+ final필드에 값을 재할당하는 것이 불가능하므로 getter만 가능, setter는 불가능
	public String getName() {
		return Name;
	}
	
	
	public void walk() {} 
	
}
  • 만약 이 상태에서 Run이라는 메인클래스를 만들고,

    Person p = new Person();
    p.Person 객체를 만들어 Person 클래스의 기본생성자를 호출하게 된다면

    기본생성자는 아무것도 없을 때 만들어지는데,
    public Person(int age)라는 매개변수가 있는 생성자가 이미 있으므로 이 때는 기본생성자가 자동으로 만들어지지 않기 때문에, 기본생성자를 호출했을 때 당연히 Run에서 실행 에러가 날 수 밖에 없다.

    따라서, 매개변수가 있는 생성자가 있을 때 기본생성자를 호출하여 실행에러가 나지 않도록 유의할 필요가 있다.

  • getter / setter
    age라는 변수는 1. 할당(setter) 2. 데이터를 반환하기(getter) 두 가지의 역할을 한다.

    위 클래스 다이어그램에서
    age는 접근제한자가 private이기 때문에 외부에서는 이 age에 접근할 수가 없는데, 이렇게 외부에서 데이터에 접근하지 못하도록 private으로 만들어 주는 것이 캡슐화이다.

    이때 사용하는 것이 getter와 setter메소드라고 할 수 있다.

    따라서 getter 메소드를 통해 호출함으로써 age에 직접 접근하지 않고도 getAge로 private영역에 있는 age를 가져올 수 있게 된다.

    다음으로 setter 메소드를 통해 getAge로 반환받은 int age 값을 전달받아서 필드의 age가 가지고 있는 age에 저장하는 것이다.

profile
철수네 개발자

0개의 댓글

관련 채용 정보