본문 바로가기

한화시스템 BEYOND SW캠프/TIL

[4주차] 24.02.02 금요일

Java Programming

 

package com.encore.hms.domain;

import com.encore.hms.domain.sup.Person;

public class StudentDTO extends Person {

    // 자기 자신만의 고유한 요소
    public String stuId;

    public StudentDTO() {
//        super(); - 묵시적으로 존재한다.
    }

    public StudentDTO(String name, int age, String address, String stuId) {
//        super(); - 묵시적으로 존재한다.
//        super.setName(name); // this.setName(name); 이라고 작성할 수도 있지만, 가독성을 위해서 super.setName(name); 이라고 작성하는 것이 좋다.
//        super.setAge(age);
//        super.setAddress(address);
        super(name, age, address);
        this.stuId = stuId;
    }

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

    public String studentInfo() {
        // return "name=" + super.getName() + ", age=" + super.getAge() + ", address=" + super.getAddress() + ", stuId=" + stuId;
        return super.personInfo() + ", stuId='" + stuId + '\'';
    }
}

 

package com.encore.hms.domain;

import com.encore.hms.domain.sup.Person;

public class TeacherDTO extends Person {
    private String subject;

    public TeacherDTO() {

    }

    public TeacherDTO(String name, int age, String address, String subject) {
        super(name, age, address);
        this.subject = subject;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String teacherInfo() {
        return super.personInfo() + ", subject='" + subject + '\'';
    }
}

 

package com.encore.hms.domain;

import com.encore.hms.domain.sup.Person;

public class EmployeeDTO extends Person {
    private String dept;

    public EmployeeDTO() {

    }

    public EmployeeDTO(String name, int age, String address, String dept) {
        super(name, age, address);
        this.dept = dept;
    }

    public String getDept() {
        return dept;
    }

    public void setDept(String dept) {
        this.dept = dept;
    }

    public String employeeInfo() {
        return super.personInfo() + ", dept='" + dept + '\'';
    }
}

 

package com.encore.hms.domain.sup;

public class Person {
    // 자식들에게 물려줄 공통의 요소
    // 접근제어자가 private 이므로 자식이지만 접근을 허용하지 않는다.
    // 다만 protected 열어주면 자식의 접근을 허용할 수 있다.
    private String name;
    private int age;
    private String address;

    public Person() {
        super();
    }

    public Person(String name, int age, String address) {
        super();
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age <= 0) {
            System.out.println("나이는 음수일 수 없습니다.");
        } else {
            this.age = age;
        }
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String personInfo() {
        return "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'';
    }
}

 

import com.encore.hms.domain.EmployeeDTO;
import com.encore.hms.domain.StudentDTO;
import com.encore.hms.domain.TeacherDTO;

public class OopMain {
    public static void main(String[] args) {
        StudentDTO stu01 = new StudentDTO();

        /* 접근지정자가 private일 경우 접근을 허용하지 않는다.
        System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.name);
        System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.age);
        System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.address);
        System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.stuId);
         */

        // setter, getter를 이용한 접근
        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu01.getName());
        stu01.setName("이윤재");
        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu01.getName());

        // 스페셜 생성자 호출을 통한 객체 생성
        System.out.println();
        System.out.println("스페셜 생성자 호출을 통한 객체 생성");

        StudentDTO stu02 = new StudentDTO("이윤재", 25, "강남구", "2020");

        System.out.println(stu02);

        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getName());
        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getAge());
        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getAddress());
        System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getStuId());

        // 나이 변경 후 변경된 값 확인
        System.out.println();
        stu02.setAge(-100);
        System.out.println("인스턴스 소유의 메서드에 접근 -> " + stu02.getAge());

        // 강사객체 생성 후 정보 확인
        System.out.println();
        System.out.println("강사객체 생성 후 정보 확인");
        TeacherDTO tea01 = new TeacherDTO("임정섭", 30, "서초구", "1992");
        System.out.println(tea01);

        // 직원객체 생성 후 정보 확인(Employee - name, age, address, dept)
        System.out.println();
        System.out.println("직원객체 생성 후 정보 확인");
        EmployeeDTO emp01 = new EmployeeDTO("태하", 30, "동작구", "매니저");
        System.out.println(emp01);
    }
}

 

import com.encore.hms.domain.EmployeeDTO;
import com.encore.hms.domain.StudentDTO;
import com.encore.hms.domain.TeacherDTO;

public class OopExtendsMain {
    public static void main(String[] args) {
        // 객체생성
        StudentDTO stu02 = new StudentDTO("이윤재", 25, "강남구", "2020");
        System.out.println(stu02.personInfo());
        System.out.println(stu02.studentInfo());
        System.out.println();

        TeacherDTO tea02 = new TeacherDTO("임정섭", 30, "서초구", "1992");
        System.out.println(tea02.personInfo());
        System.out.println(tea02.teacherInfo());
        System.out.println();

        EmployeeDTO emp02 = new EmployeeDTO("태하", 30, "동작구", "매니저");
        System.out.println(emp02.personInfo());
        System.out.println(emp02.employeeInfo());
    }
}

'한화시스템 BEYOND SW캠프 > TIL' 카테고리의 다른 글

[5주차] 24.02.06 화요일  (0) 2024.02.06
[5주차] 24.02.05 월요일  (0) 2024.02.05
[4주차] 24.02.01 목요일  (0) 2024.02.01
[4주차] 24.01.31 수요일  (0) 2024.01.31
[4주차] 24.01.30 화요일  (0) 2024.01.30