OOP, 클래스와 객체

정민교·2022년 9월 7일
0

OOP(Object-Oriented Programming)

한국말 그대로 이야기하면 객체 지향 프로그래밍이다.

여기서 이야기하는 객체모든 실재하는 대상(무형의 대상 포함) 이다.

무슨 이야기인가 싶지만 쉽게 예를 들면 사람, 휴대폰 등을 객체로 볼 수 있다.

현실 세계는 객체로 구성되어 있으며 모든 일은 객체들의 상호작용을 통해 일어난다.

OOP이러한 현실 세계를 최대한 프로그래밍에 반영한 프로그래밍 패러다임 이다.

OOP의 장점이 있다면 단점 또한 있으며 이는 다음에 알아보도록 하자.

객체, 인스턴스

객체모든 실재하는 대상 이라고 이야기했다.

프로그래밍에서는 이 객체를 추상화시켜 속성(상태)기능을 정의하였다.
차를 예로 들어보자

속성기능
바퀴 수, 문 수, 색, 모델명전진, 후진, 정지

클래스

클래스객체를 정의한 설계도, 틀 이다.

클래스는 크게 네 가지의 구성요소를 갖는다.

  • 필드: 객체가 갖는 속성을 나타내는 변수
  • 메서드: 객체가 갖는 기능을 나타내는 함수
  • 생성자: 객체를 생성할 때 호출되는 메서드로 객체의 필드를 초기화한다.
  • 이너클래스: 클래스 내부의 클래스

이처럼 클래스객체를 정의하여 객체가 갖는 속성과 기능을 필드와 메서드로 나타낸다.

그리고 클래스를 이용하여 객체를 생성한다.

클래스의 구성 요소 중 생성자를 제외한 세 가지를 클래스의 멤버라고 부른다.

앞에서 예로 든 차를 가지고 클래스를 정의해보자.

class Car {
	String model;
    String color;
    int doors;
    int wheels;
    
    void moveForward() {};
    void moveBackward() {};
    void stop() {};
 }

객체의 생성과 활용

객체를 정의한 클래스를 이용하여 객체를 생성할 수 있다.

객체를 생성할 때 new 연산자를 사용한다.

Car car = new Car();

이렇게 생성된 객체힙 영역에 저장되고
객체를 참조하는 변수스택 영역에 저장되며 변수에는 객체를 가리키는 메모리 주소값이 할당된다.

정의된 클래스는 클래스 영역(Method area)에 저장되는데
메서드의 구현 코드 또한 클래스 영역에 저장되며
생성된 객체는 메서드를 호출할 때 클래스 영역에 있는 메서드를 찾아 사용한다.

JVM Strcuture에 대해서는 나중에 다시 알아보자

생성된 객체의 멤버에 접근하기 위해서는 참조 변수와 .(포인트 연산자)를 이용하여 접근한다.

class Car {
	String model;
    String color;
    int doors;
    int wheels;
    
    void moveForward() {
    	System.out.println("전진!");
    };
    void moveBackward() {};
    void stop() {};
 }

public class CarTest {
	public static void main(String[] args) {
    	Car car = new Car();
        
        car.doors = 4;
        car.wheels = 4;
        
        System.out.println(car.doors, car.wheels); // 4 4
        car.moveForward(); // 전진!
    }
}

추가 공부할 것

  • 객체지향 프로그래밍 장점과 단점
  • JVM 구조
profile
백엔드 개발자

0개의 댓글