잘 설계된 클래스

Muhly·2023년 3월 22일
0

oop

목록 보기
6/8

안녕하세요🤗10기ssafy를 목표로 열심히 달리고 있는 Muhly라고 합니다.저의 벨로그는 저의 창작물도 있겠지만 다른 유명한 강사님들과 블로거분들의 글들이 많이 포함하고 있습니다.이 벨로그는 저의 스터디 노트와 일상 기록용입니다.

✏️잘 설계된 클래스의 조건은?

어떻게 만들어야 잘 만들어진 VOclass인가?
1️⃣ 모든 멤버는 정보 은닉한다.
2️⃣ 디폴트 생성자를 명시적으로 만들어준다
3️⃣ 생성자를 이용하여 초기화를 중복정의 시켜준다
4️⃣ setter와 getter메서드 시켜준다
5️⃣ toString 메서드 이용헌다

❗️정보은닉을 하는 이유?

기본적으로 모든 매개변수는 정보은닉을 해야합니다. 만약 스타벅스를 짓고 회원관리를 시작하게 되었습니다. 그러면 고객의 개인정보를 갖게 될텐데 이 정보들을 아무한테나 보여줄 수도 없고 아무렇게나 고쳐서도 안되겠죠?
그러니 private을 써서 함부로 접근하지 못하도록 합니다!!!!

메모리에 데이터를 넣고 뺴는 것이 목표지만 외부로부터 상태정보를 보호해야한다
이말입니다.그러면 관리는 어떻게 하나요?고객의 번호가 바뀔수도 있고 주소가 바뀔 수도 있는데 그러면 영영 못바꾸잖아요ㅠㅠ

그래서 우리는 간접적인 방법을 써야 합니다. Getter와 Setter라는 Method를 통해 private멤버변수에 접근합니다.

Private으로 접근을 막고 Setter와 getter메서드로 접근과 리턴을 허용한다.

✏️MemberVO를 설계해보자

package oop;

public class MemberVO {
    private String name;
    private int age;
    private String tel;
    private String addr;

    //default생성자_쓰든 안쓰든 만든다
    public MemberVO(){

    }

    //생성자 중복정의하여 초기화
    public MemberVO(String name, int age, String tel, String addr) {
        this.name = name;
        this.age = age;
        this.tel = tel;
        this.addr = addr;
    }

    //setter, getter method
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    //toString 메서드_디버깅하는것이다
    @Override
    public String toString() {
        return "MemberVO{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

✏️getter와 setter를 이용해보자

package oop;

public class TPC14 {
    public static  void main(String[] args) {
        MemberVO m  = new MemberVO();

        //데이터 입력
        m.setName("Muhly");
        m.setAge(25);
        m.setTel("01012345678");
        m.setAddr("seoul");

        //데이터 출력
        System.out.println(m.getName()+"\t");
        System.out.println(m.getAge()+"\t");
        System.out.println(m.getTel()+"\t");
        System.out.println(m.getAddr()+"\t");
    }
}

출력값
Muhly
25
01012345678
seoul

✏️toString을 이용해보자

package oop;

public class TPC15 {
    public static void main(String[] args) {

        MemberVO m = new MemberVO("ghdrlfehd", 40, "010-2345-6775","busan");
        //setter method -X

        System.out.println(m.toString());



    }
}

출력값
MemberVO{name='ghdrlfehd', age=40, tel='010-2345-6775', addr='busan'}

profile
https://muhlysstudynote.tistory.com/-> 블로그 이전하였습니다

0개의 댓글