본문 바로가기
개발일지

개발일지 12일차 -객체 지향 프로그래밍-

by 태운콩즙 2023. 12. 11.
728x90
반응형

객체 지향 프로그래밍이란 다루고 싶은 정보를 클래스로 표현할수 있고

그 대상이 가지고 있느 상세 정보는 클래스 내에 필드로 표현을 할수있다

 

객체 지향 프로그래밍은 절차 지향 프로그래밍의 단점을 극복해낼수 있는데

절차 지형 프로그래밍은 동일한 목적을 갖는 코드를 여러번 반복해야 해서 반복 될수록 전체 코드의 양이 많아지고

여러번 반복 되는 코드를 수정 하는 경우 모두 고쳐야하며 표현에도 한계가 있다

 

그렇다면 객체 지향형 프로그래밍으로 학생의 정보를 다루고 싶다면 어떻게 표현을 해야할까?

 

예를 들어 학생의 이름, 학과 , 전화 번호를 표현을 하게된다면

// 학생을 표현 하기 위한 클래스
public class Student{
//학생의 구체적인 정보를 위한 필드
String studentName;
String studentMajor;
Sting studentMobile;
}

실제 학생의 구체적 데이터를 다루기 위해선 해당 클래스에 대한 객체(인스턴스)를 선언하여 정보를 담아야 한다

// student 클래스가 아닌 다른 클래스
Student student1 = new Student();
student1.studentName = "이름1";
student1.studentMajor = "컴퓨터 공학";
student1.studentMobile = "010-2222-2222";

 

위와 같이 표현 할수 있다

 

- 클래스-.

 

클래스의 3 요소

 

i 필드

 

1 클래스가 가지고 있는 구체적 정보를 담는 일종의 변수이다

2 변수를 선언 하듯이 선언 하여서 사용한다

 

<예문>

package ch10_class.ex2;

public class Student {
    //필드 선언
    String studentName;
    String studentMajor;
    String studentMobile;
    
    public Student(){
        System.out.println("Student 기본생성자");
    }
}

 

package ch10_class.ex2;

public class StudentMain {
    public static void main(String[] args) {
        // student 클래스 객체 선언
        Student student1 = new Student();
        //Student 클래스에 필드에 값 저장하기
        student1.studentName = "학생1";
        student1.studentMajor = "컴퓨터 공학";
        student1.studentMobile = "010-1111-1111";
        System.out.println("student1.studentName = " + student1.studentName);
        System.out.println("student1.studentMajor = " + student1.studentMajor);
        System.out.println("student1.studentMobile = " + student1.studentMobile);

        // 새로운 Student 객체 선언
        Student student2 = new Student();
        student2.studentName = "학생2";
        student2.studentMajor = "경영학";
        student2.studentMobile = "010-2222-2222";

    }
}

(필드 생성)

 

ii. 생성자

 

1 해당 클래스를 객체로 선언하기 위한 규칙

2생성자의 이름은 클래스 이름과 동일 하며 소괄호 안에 매개변수를 작성할수 있음

3 생성자를 별도로 정의 하지 않으면 기본 생성자를 사용할 수 있음

public class Student{
 // 기본 생성자
}

 public Student() {

  }
}

4 기본 생성자가 아닌 매개 변수가 있는 생성자만 정의 한다면 기본 생성자를 사용할수 없음

 a. 기본 생성자가 필요하다면 추가로 선언 해야함

 

<예문>

 

package ch10_class.ex3;

public class Student {
    //필드 선언
    String studentName;
    String studentMajor;
    String studentMobile;

    public Student() {
        System.out.println("Student 기본생성자");
    }

    // 매개변수가 있는 생성자
    public Student(String studentName) {
        System.out.println("name을 매개변수로 하는 생성자");
        System.out.println("studentName = " + studentName);
    }

    // 매개변수 2개가 있는 생성자
    public Student(String studentName, String studentMajor) {
        System.out.println("studentName = " + studentName + "studentMajor = " + studentMajor);
    }

    // 매개변수 3개있는 생성자
    public Student(String studentName, String studentMajor, String studentMobile){
        System.out.println("studentName = " + studentName + ", studentMajor = " + studentMajor + ", studentMobile = " + studentMobile);
    }
}

 

 

package ch10_class.ex3;

public class StudentMain {
    public static void main(String[] args) {
        // 기본 생성자로 객체 선언
        Student student1 = new Student();

        // 매개변수가 있는 생성자로 객체 선언
        Student student2 = new Student("이름1");


        // 매개 변수 2개 있는 생성자로 객체 선언
        Student student3 = new Student("이름1","체육학");

        //매개 변수 3개있는 생성자로 객체 선언
        Student getStudent4 = new Student("이름4","사회학", "010-1111-1111");

    }

}

( 기본 생성자와 매개변수를 사용)

 

 

<예문>

 

package ch10_class.ex1;

public class Student {
}

 

package ch10_class.ex1;

public class studentMain {
    public static void main(String[] args) {
        // Student 클래스 객체 선언
        Student student1 = new Student();
    }
}

( 클래스 선언과 객체 선언)

 

 

728x90
반응형