공부/Java

Java 기초, Object Oriented Programming(OOP) [클래스와 객체]

snn.il 2022. 2. 11. 21:16

객체 지향 프로그래밍

  • 객체를 기반으로 하는 프로그래밍 (<-> 절차 프로그래밍 _ C언어)
  • 절차 프로그래밍은 절차를 기반으로 프로그래밍을 구현하고 실행함 (ex: Time이 기준)
  • OOP는 말 그대로 객체를 기반으로 프로그래밍을 구현하고 실행하는 것
  • 시간, 절차 중심이 아닌 객체를 중심으로 객체들의 상호작용으로 프로그래밍을 구현하고 실행
  • 객체 : 의사나 행위가 미치는 대상, 구체적이며 추상적인 데이터 단위

절차 프로그래밍(ex: C언어)

절차 프로그래밍은 이처럼 시간을 중심으로 모든 사건이 진행된다. 예를 들어 학생이 일어나서 밥을 먹고 옷을 입고 버스를 타서 학교를 간다면 이 과정을 각각의 객체(학생, 밥, 옷, 버스, 학교)가 아닌 이 사건의 시간의 흐름으로 프로그램을 구현하고 실행하게 된다.

객체 지향 프로그래밍(ex: Java, Python)

하지만 객체 지향 프로그래밍은 시간 순으로 구현된 것이 아닌 각각의 객체를 기준으로 프로그램이 구현되고 실행된다. 즉, 학생이 밥을 먹고 옷을 입고 버스를 타고 학교를 가는 이 일련의 사건에서 시간이 아닌 각각의 객체들(학생, 밥, 옷, 버스. 학교)의 상호작용으로 표현한다는 것이다. 그러므로 이 과정에선 각각에 대한 객체를 정의하고 객체가 하는 기능을 구현하며 객체 사이의 협력을 표현해줘야 할 것이다. 이 과정들이 결국 객체 지향 프로그래밍의 과정인 것이다. 이 과정에서의 핵심이 바로 클래스이다.

 

클래스

  • 객체에 대한 속성과 기능을 코드로 구현한 것. 즉, 객체를 표현하기 위해 사용
  • 객체지향 프로그램의 기본적인 사용자 정의 데이터형(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;
	}
	
}