728x90
객체와 객체 지향 프로그래밍
- 국어 사전에서 객체의 뜻을 찾아보면 '의사나 행위가 미치는 대상'이라고 설명합니다.
- 객체지향은 간단히 말해서 프로그램을 구현하는 기법입니다.
- 우리 주위에 있는 객체는 사람, 집, 자동차 등 눈에 보이는 모든 사물을 의미합니다.
- 눈에 보이지 않는 것도 객체가 될 수 있습니다. 인터넷, 주문, 배달관리시스템 등 어떤 행동을 나타내는 단어도 객체가 될 수 있습니다.
- 객체를 프로그램화한다는 것은 객체가 가지고 있는 정보를 코드로 구현하는 것을 의미합니다. 객체가 가지고 있는 속성과 기능을 조사한 다음 묶어서 클래스라는 요소로 만듭니다. 객체를 프로그램화 한다는 것은 객체를 클래스로 만든다는 것입니다. 그래서 자바에서 객체는 클래스로 만들게 됩니다.
생활 속에서의 객체
- 절차 지향 프로그래밍이란 아침에 일어나서 학교에 가는 것 까지의 행위를 순차적으로 프로그래밍하는 것을 의미합니다.
- 객체 지향 프로그래밍이란 객체를 정의하고 객체 간 협력을 프로그래밍하는 것입니다.
- 학생이 학교에 등교하는 상황에서 객체에는 학생, 밥, 버스, 학교 등이 있습니다.
- '밥을 먹는다'는 행동은 '학생'이라는 객체와 '밥'이라는 객체가 있어 학생이 밥을 먹는 협력으로 이루어집니다.
- '버스를 탄다'는 '학생' 객체가 '버스' 객체에 타는 협력으로 이루어집니다.
- 이렇듯 객체 지향 프로그램은 먼저 객체를 만들고 객체 사이에 일어나는 일을 구현하는 것입니다.
- 따라서 우리가 객체 지향 프로그래밍을 할 때는 객체를 먼저 정의하고 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할 것인지를 고민해야 합니다.
객체 지향 정리하면!
- 우선 객체란, 사람, 집, 자동차 등 눈에 보이는 모든 사물 뿐만 아니라 눈에 보이지 않는 것도 객체가 될 수 있습니다.
- 객체 지향 프로그래밍이란 객체를 정의하고 객체 간 협력을 프로그래밍하는 것입니다.
- 객체의 정의란, 객체가 가지고 있는 속성과 기능을 조사한 다음 하나의 단위, 즉, 클래스로 묶는 것을 의미합니다. 객체의 속성은 클래스의 멤버 변수가 되고 객체의 기능은 클래스의 멤버 메서드가 됩니다.
- 객체 간 협력이란, 객체 사이의 협력 기능을 반영한 멤버 함수를 선언했다는 것을 의미합니다.
예를 들어, '학생이 지하철을 탄다'는 학생 객체의 입장에서 사용한 문장입니다. 이를 지하철 객체의 입장에서 생각해 보면 '지하철에 학생이 탄다'입니다. 즉 하나의 경우에 대해 두 객체에서 서로 다른 일이 발생하는 것이므로 이를 각각의 클래스에서 서로 다른 기능을 가진 메서드로 구현했습니다. 이렇게 하나의 사건에 대해 각각의 객체들에 맞는 멤버 함수를 선언하는 것을 '객체 사이의 협력 기능을 반영한 멤버 함수를 선언했다'를 의미합니다.
객체, 클래스, 인스턴스
- 객체란 '의사나 행위가 미치는 대상'입니다.
- 객체를 코드로 구현한 것이 클래스입니다.
- 클래스가 메모리 공간에 생성된 상태가 인스턴스입니다.
클래스란?
- 객체 지향 프로그램은 클래스를 기반으로 프로그래밍합니다.
- 클래스는 객체의 속성과 기능을 코드로 구현한 것입니다.
- 객체를 클레스로 구현하는 것을 '클래스를 정의한다'라고 합니다.
- 클래스를 정의하는 문법을 간단히 나타내면 다음과 같습니다.
(접근 제어자) class 클래스 이름 {
멤버 변수;
메서드;
}
- 이번에는 실제로 클래스를 만들어 봅시다.
public class Student {
int studentID;
String studentName;
int grande;
String address;
}
- 클래스 이름 앞에 있는 public 예약어는 '접근 제어자' 라고 합니다. 이후에 정보 은닉 편에서 자세히 배울 겁니다. 여기에서는 public class 인 경우 class 이름과 자바 파일 이름이 같아야 한다는 정도만 알고 넘어갑시다.
- 클래스를 만들 때는 class 예약어를 사용합니다.
- 그리고 클래스 이름은 Student 라고 정했습니다.
- { } 안에는 클래스 내용을 구현합니다.
- 객체의 속성을 클래스의 변수로 선언합니다.
- 자바에서 모든 요소는 클래스 내부에 있어야 한다.
- 클래스 외부에는 package 선언과 import 문장 외에 아무것도 선언하지 않는다.
클래스 이름 짓는 규칙
- 자바에서 클래스 이름은 대문자로 시작합니다.
- 프로그램 내부에 지정된 규칙은 아니나, 개발자들 사이의 규칙으로, 이런 개발자들 사이의 규칙을 코딩 컨벤션이라고 합니다.