[JAVA] 객체지향 프로그래밍과 클래스

2021. 9. 8. 01:29Web/JAVA

728x90

객체(Object)란?

"의사나 행위가 미치는 대상"

구체적, 추상적 데이터 단위

 

객체지향 프로그래밍(Object Oriented Programming, OOP)

객체를 기반으로 하는 프로그래밍

ex) 학교를 가는 과정

객체를 정의, 기능 구현, 객체 사이의 협력 구현

 

 

cf. 절차지향 프로그래밍(Procedural Prigramming)

ex) 학교를 가는 과정 : 일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다 -> 학교에 도착한다

// 시간에 따른 프로그래밍


클래스(class)란?

객체에 대한 속성과 기능을 코드로 구현한 것

 

객체의 속성

객체의 특성, 속성, 멤버 변수

property, attribute, member, variable

 

객체의 기능

객체가 하는 기능들을 메서드로 구현

method, member, tunction

 

클래스 정의하기

class는 대부분 대문자로 시작

하나의 java 파일에 하나의 클래스를 두는 것이 원칙이나, 여러 개의 클래스가 같이 있는 경우

public 클래스는 하나여야 하며 public 클래스와 자바 파일의 이름은 동일해야 함

 

(접근 제어자) class 클래스 이름 {

  멤버 변수;

  메서드;

}

 

ex) 학생 클래스의 예

속성 : 학번, 이름, 학년, 전공 과목, 거주지 등

기능 : 수강신청, 수업듣기, 출석하기, 시험보기 등

 

클래스의 기능

메서드(method)로 구현

멤버 함수(member function)라고도 함

객체가 수행하는 기능을 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package classpart;
 
public class Student {
    
    int studentID; // 정수
    string studentName; // 이름은 문자기 때문에 문자열을 사용하기 위해 string 클래스 사용
    int grade; // 정수
    string address; // 문자열
    
    public void showStudentInfo() {
        System.out.println(studentName + "," + address); // <- 메서드
    }
    
}
 
cs

 

메서드(method)

함수의 일종

객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수

 

함수란?

하나의 기능을 수행하는 일련의 코드

중복되는 기능은 함수로 구현하여 함수를 호출하여 사용함

ex)

* 숫자 두 개를 입력받아 더한다

* 두 개의 가격을 더한다

* 두 거리를 더한다

=> 더하기 함수

 

함수 정의하기

함수를 코드로 구현

함수의 이름, 매개변수, 반환값을 선언하고 코드로 구현

int : 함수 반환형 // 반환값의 자료형을 나타냄, 없을 경우 void 사용

add : 함수 이름 // 함수의 기능과 관현하여 명명

int num1, int num2 : 매개변수 // 함수의 수행을 위한 변수

return : 리턴 // 함수 수행 결과 반환을 위한 명령어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package classpart;
 
public class FunctionTest {
 
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 30;
        
        int sum = addNum(num1, num2); // return에서 반환된 값이 sum으로 들어감
        System.out.println(sum); // 출력
    }
 
    public static int addNum(int n1, int n2) { // n1, n2는 addNum에서 새로 선언된 변수, 값을 복사해서 받는 역할만 함
        int result = n1 + n2; // 복사한 값을 더한 후
        return result; // 리턴으로 반환
    }
}
 
cs

클래스 생성하기

클래스를 사용하기 위해서는 클래스를 생성해야 함

new 예약어를 통해 클래스를 생성

 

클래스형 변수 이름 = new 생성자;

 

생성자(constructor)

생성자는 인스턴스를 초기화할 때의 명령어 집합

생성자의 이름은 그 클래스의 이름과 같음

생성자는 메서드가 아님, 상속되지 않으며 리턴 값은 없음

 

디폴트 생성자(default constructor)

하나의 클래스에는 반드시 적어도 하나 이상의 constructor가 존재

프로그래머가 constructor를 기술하지 않으면 default constructor가 자동으로 생김

(컴파일러가 코드에 넣어줌)

만일 클래스에 매개변수가 있는 생성자를 추가하면 디폴트 생성자는 제공되지 않음

 

생성자 오버로드(constructor overload)

필요에 의해 생성자를 추가하는 경우 여러 개의 생성자가 하나의 클래스에 있음

1
2
3
4
5
6
    public Student() {} // 디폴트 생성자
    
    public Student(int id, String name) { // Student가 생성될 때 두 개의 매개변수를 전달받는 생성자
        studentID = id;
        studentName = name;
    }
cs

'Web > JAVA' 카테고리의 다른 글

[JAVA] this란?  (0) 2021.09.09
[JAVA] 정보은닉(information hiding)  (0) 2021.09.08
[JAVA] 반복문의 종류  (0) 2021.09.04
[JAVA] 조건문의 종류  (0) 2021.09.03
[JAVA] 연산자의 종류  (0) 2021.09.02