공부/Java
Java 기초, Object Oriented Programming(OOP) [클래스와 객체]
snn.il
2022. 2. 11. 21:16
객체 지향 프로그래밍
- 객체를 기반으로 하는 프로그래밍 (<-> 절차 프로그래밍 _ C언어)
- 절차 프로그래밍은 절차를 기반으로 프로그래밍을 구현하고 실행함 (ex: Time이 기준)
- OOP는 말 그대로 객체를 기반으로 프로그래밍을 구현하고 실행하는 것
- 시간, 절차 중심이 아닌 객체를 중심으로 객체들의 상호작용으로 프로그래밍을 구현하고 실행
- 객체 : 의사나 행위가 미치는 대상, 구체적이며 추상적인 데이터 단위
절차 프로그래밍은 이처럼 시간을 중심으로 모든 사건이 진행된다. 예를 들어 학생이 일어나서 밥을 먹고 옷을 입고 버스를 타서 학교를 간다면 이 과정을 각각의 객체(학생, 밥, 옷, 버스, 학교)가 아닌 이 사건의 시간의 흐름으로 프로그램을 구현하고 실행하게 된다.
하지만 객체 지향 프로그래밍은 시간 순으로 구현된 것이 아닌 각각의 객체를 기준으로 프로그램이 구현되고 실행된다. 즉, 학생이 밥을 먹고 옷을 입고 버스를 타고 학교를 가는 이 일련의 사건에서 시간이 아닌 각각의 객체들(학생, 밥, 옷, 버스. 학교)의 상호작용으로 표현한다는 것이다. 그러므로 이 과정에선 각각에 대한 객체를 정의하고 객체가 하는 기능을 구현하며 객체 사이의 협력을 표현해줘야 할 것이다. 이 과정들이 결국 객체 지향 프로그래밍의 과정인 것이다. 이 과정에서의 핵심이 바로 클래스이다.
클래스
- 객체에 대한 속성과 기능을 코드로 구현한 것. 즉, 객체를 표현하기 위해 사용
- 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user defined data type)
- 다른 클래스와 독립적으로 디자인되지만, 클래스간의 협력을 통해 서로 연관지을 수 있음
- 이런 클래스를 통해 객체(Object)를 생성 [객체 : 클래스의 인스턴스(실제로 메모리상에 할당된 것)]
- 클래스의 속성은 멤버 변수(member variable)를 통해 표현.
- 클래스의 기능은 메서드(method)를 통해 구현. [메서드 : 클래스로부터 생성된 객체를 사용하는 방법, 객체간의 협력에도 사용됨.]
- 다양한 특징 존재 (상속, 참조, 자료 추상화, 인터페이스, 다형성 등)
예시
public class Student{
//멤버 변수 : 해당 객체의 속성을 기술
int studentID;
String studentName;
int grade;
String address;
// 생성자 : 객체가 생성될 때, 기본적으로 객체의 속성을 설정하기 위한 수단
public Student(int id, String name) {
studentID = id;
studentName = name;
}
// 메서드 : 해당 객체의 기능을 기술
public void showStudentInfo() {
System.out.println(studentName + "," + address );
}
public String getStudentName() {
return studentName;
}
public void setStudentname(String name) {
studentName = name;
}
}