JAVA

객체 지향 프로그래밍, 클래스

seungmin576 2024. 12. 11. 16:21

객체와 객체 지향 프로그래밍

객체란 '의사나 행위가 미치는 대상' 이다.

우리 주위에 있는 객체를 생각해 보면 사람, 자동차, 건물 등이 있다.

눈에 보이는 모든 사물은 모두 객체다.

그리고 눈에 안 보이는 것도 객체가 될 수 있다.

주문, 생산, 관리 등 어떤 행동을 나타내는 단어도 객체가 될 수 있다.

자바는 흔히 객체 지향 프로그래밍이라고 하는데 이 의미는 '어떤 대상(객체)을 가지고 프로그래밍한다'는 개념이다.

 

  • 객체와 객체 지향 프로그래밍의 예시

아침에 일어나서 학교를 간다고 할 때 학교까지 가는데 여러 가지 일을 나열한다면

'아침에 일어난다. 씻는다. 밥을 먹는다. 버스를 탄다. 요금을 지불한다. 학교에 도착한다.' 인데

이렇게 순서대로 일어나는 일을 시간순으로 프로그래밍하는 것을 절차 지향 프로그래밍이라고 한다.

절차 지향 프로그래밍에는 대표적으로 C 언어가 있다.

 

반면에 객체 지향 프로그래밍이란 객체를 정의하고 객체 간 협력을 프로그래밍하는 것이다.

객체를 찾아보면 밥, 학생, 버스, 학교 등이 있다.

'밥을 먹는다'는 행동은 '학생' 이라는 객체와 '밥' 이라는 객체가 있어 학생이 밥을 먹는 협력으로 이루어진다.

'버스를 탄다'는 행동은 '학생' 객체가 '버스' 객체에 타는 행동이 발생한다.

이렇듯 객체 지향 프로그램은 먼저 객체를 만들고 객체 사이에 일어나는 일을 구현하는 것이다.

객체 지향 프로그래밍을 할때는 객체를 먼저 정의하고 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할 것인지 고민해야 한다.

 

 

 

클래스

객체 지향 프로그램은 클래스를 기반으로 프로그래밍한다.

클래스는 객체의 속성과 기능을 코드로 구현한 것이다.

객체를 클래스로 구현하는 것을 '클래스를 정의한다' 라고 한다.

클래스를 정의하려면 우선 클래스 이름과 클래스가 가지는 속성 또는 특성이 필요하다.

 

  • '학생' 객체를 클래스로 구현하는 예시

객체를 표현할 클래스의 이름이 필요하다.

학생 객체를 표현할 클래스의 '이름' 을 Student 라고 한다.

학생 객체가 가지는 일반적인 속성을 생각 해 보면 '학번', '이름', '학년', '사는 곳' 등이 있다.

이런 클래스 속성은 특성이라고도 하고 클래스 내부에 변수로 선언한다.

이렇게 선언하는 클래스의 속성을 '멤버 변수' 라고 한다.(멤버 변수는 '속성', '특성' 이라고도 불린다.)

(접근 제어자) class 클래스 이름 {
	멤버 변수;
    메서드;
}

public class Student {
    int studentID;
    String studentName;
    int grade;
    String address;
}

 

클래스를 만들 때는 class 예약어를 사용한다

그리고 클래스의 이름은  Student이다.

중괄호 안에는 클래스 내용을 구현한다.

학생이라는 객체의 속성에 대해 사용할 속성을 클래스의 변수로 선언한다.

변수를 선언할 때는 변수 속성에 맞는 자료형을 사용해야 한다.

자바 프로그램은 모든 요소가 클래스 내부에 있어야 한다.

클래스 외부에는 package 선언과 import 문장 외에 아무것도 선언하지 않는다.

 

 

  • 클래스 이름 짓는 규칙

자바에서 클래스 이름은 대문자로 시작한다.

소문자로 시작한다 해서 오류가 발생하지는 않지만 개발자들 사이의 규칙이라 한다.

 

 

  • 클래스 기능을 구현하는 메서드

클래스에서는 학생 객체가 가지는 속성을 사용해 학생과 관련된 기능을 구현할 수 있다.

예를 들어 '학생에게 이름을 부여한다', '학생이 사는 곳을 출력한다' 등 처럼 말이다.

클래스 내부에서 멤버 변수를 사용하여 클래스 기능을 구현한 것 '멤버 함수' 또는 '메서드' 라고 한다.

 

 

  • 패키지

간단히는 클래스 파일의 묶음이다.

패키지를 만들면 프로젝트 하위에 물리적으로 디렉터리가 생성된다.

또한 패키지는 계층 구조를 가질 수 있다.

프로젝트를 수행할 때 패키지의 계층 구조를 구성하는 것은 전체 프로젝트의 소스 코드를 어떻게 관리할지와 관련이 있다.

클래스 이름이 같다고 해도 패키지 이름이 다르면 클래스 전체 이름이 다른 것이므로 다른 클래스가 된다.

같은 클래스 이름이더라도 다른 패키지에 존재한다면 별개의 것이다.

자바 소스코드에서 클래스의 패키지 선언은 맨 위에 한다.

'JAVA' 카테고리의 다른 글

클래스와 인스턴스  (0) 2024.12.12
함수(매개변수, return), 스택 메모리, 메서드  (0) 2024.12.11
continue문, break문  (0) 2024.12.10
반복문  (0) 2024.12.09
조건문  (2) 2024.12.09