고급 PHP 프로그래밍 – 객체 지향 PHP – 0 – 클래스와 객체 생성

고급 PHP 프로그래밍 - 객체 지향 PHP - 0 - 클래스와 객체 생성
고급 PHP 프로그래밍 – 객체 지향 PHP – 0 – 클래스와 객체 생성

고급 PHP 프로그래밍 – 객체 지향 PHP – 클래스와 객체 생성

안녕하세요~ 😊
오늘부터는 PHP의 꽃이라고 할 수 있는 **객체 지향 프로그래밍(OOP)**에 대해 본격적으로 배워볼 거예요!
그 첫 번째 시간으로, 가장 기본이 되는 개념인 클래스와 객체 생성에 대해 친절하게 알려드릴게요.

절차지향 프로그래밍이 요리를 순서대로 하는 것이라면,
객체지향은 요리사, 조리도구, 레시피처럼 역할을 나눠서 협력하는 방식이에요!

그럼 우리 같이 클래스와 객체의 세계로 들어가볼까요? 🚪


객체 지향 프로그래밍이란?

**객체 지향 프로그래밍(Object-Oriented Programming)**은
현실 세계의 사물을 프로그램 안으로 옮겨와 “객체” 단위로 개발하는 방식이에요.

예를 들어, 자동차를 프로그램으로 표현한다고 할 때,
시동 켜기(), 브레이크 밟기(), 속도 조절하기() 같은 기능과
속도, 색상, 연료량 같은 속성을 가진 객체로 표현할 수 있는 거죠.


클래스와 객체의 개념 이해하기

개념 설명 비유
클래스(Class) 객체를 만들기 위한 설계도 쿠키틀, 건축 도면
객체(Object) 클래스에서 실제로 만들어진 실체 쿠키, 실제 지어진 건물
인스턴스(Instance) 클래스의 복제본 (객체 = 인스턴스) 생성된 쿠키 하나

즉, 클래스는 틀이고, 객체는 그 틀을 바탕으로 찍어낸 개체랍니다! 😊


1. 클래스 선언하기

PHP에서 클래스를 선언하는 기본 문법은 아래와 같아요.

class 클래스명 {
    // 속성 (변수)
    // 메서드 (함수)
}

예제: 간단한 사람 클래스

class Person {
    public $name;
    public $age;

    public function introduce() {
        echo "안녕하세요, 저는 {$this->name}이고, 나이는 {$this->age}살입니다.";
    }
}

public은 접근제어자(접근권한)인데, 나중에 더 자세히 배워볼게요!


2. 객체 생성하기 – new 키워드

클래스를 기반으로 객체를 생성하려면 new 키워드를 사용합니다.

$person1 = new Person(); // Person 객체 생성

이렇게 하면 $person1이라는 변수가 **Person 클래스의 인스턴스(객체)**가 되는 거예요!


3. 객체 속성 사용하기

객체의 속성(변수)에 값을 할당하거나 읽을 때는 -> 연산자를 사용합니다.

$person1->name = "홍길동";
$person1->age = 30;

echo $person1->name; // 홍길동

4. 객체 메서드 호출하기

객체에 정의된 메서드는 아래처럼 호출할 수 있어요.

$person1->introduce(); // "안녕하세요, 저는 홍길동이고, 나이는 30살입니다."

여기서 $this는 클래스 내에서 현재 객체 자신을 가리키는 키워드예요.


5. 여러 객체 생성해보기

클래스를 기반으로 여러 객체를 만들 수 있어요.

$person2 = new Person();
$person2->name = "임꺽정";
$person2->age = 40;

$person1->introduce(); // 홍길동
$person2->introduce(); // 임꺽정

→ 클래스는 틀이기 때문에, 객체는 각각 독립된 값과 동작을 가집니다!


6. 생성자 함수 사용하기 – __construct()

객체를 생성할 때, 자동으로 실행되는 특별한 함수가 바로 생성자 함수예요.

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function introduce() {
        echo "안녕하세요, {$this->name}입니다. 나이는 {$this->age}살이에요.";
    }
}

$person1 = new Person("이순신", 45);
$person1->introduce();

→ 생성자를 사용하면 객체 생성 시 바로 값 설정이 가능해요!


7. 클래스 예제: 자동차

class Car {
    public $brand;
    public $speed = 0;

    public function __construct($brand) {
        $this->brand = $brand;
    }

    public function accelerate($value) {
        $this->speed += $value;
        echo "{$this->brand}가 {$value}km/h 가속합니다. 현재 속도: {$this->speed}km/h<br>";
    }

    public function brake() {
        $this->speed = 0;
        echo "{$this->brand}가 멈췄습니다.<br>";
    }
}

$car1 = new Car("현대");
$car1->accelerate(50);
$car1->brake();

객체 지향의 장점

  • ✅ 코드 재사용이 쉬워요 (클래스 하나 만들어 여러 번 사용 가능)
  • ✅ 유지보수가 편해요 (각 객체의 책임이 명확)
  • ✅ 확장성이 뛰어나요 (새로운 기능을 추가하기 쉬움)
  • ✅ 협업이 좋아져요 (역할 분담이 명확)

주의사항 체크! 🔎

항목 설명
class 키워드 PHP 클래스 선언 시 필수
new 키워드 객체 생성 시 필수
$this->속성 클래스 내부에서 객체 자기 참조
-> 연산자 객체의 속성/메서드 접근
__construct() 생성자 함수, 객체 생성 시 자동 호출

마무리하며 😊

이번 시간에는 객체 지향 프로그래밍의 첫걸음!
클래스와 객체 생성에 대해 알아보았어요.

이제 여러분은 데이터를 변수로만 저장하던 과거에서 벗어나,
진짜 현실 세계처럼 “사람”, “차”, “계좌” 등을 객체 단위로 표현할 수 있는 힘을 갖게 되었답니다!

다음 시간에는 **접근 제어자(public, private 등)**와 **메서드의 다양성(오버로딩 등)**에 대해 깊이 있게 다뤄볼게요.

오늘도 꾸준히 배우는 여러분이 진짜 개발자입니다! 👏💻🧠

답글 남기기