
고급 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 등)**와 **메서드의 다양성(오버로딩 등)**에 대해 깊이 있게 다뤄볼게요.
오늘도 꾸준히 배우는 여러분이 진짜 개발자입니다! 👏💻🧠