안녕하세요! 그레이해커 월횽입니다. 이번 강의에서는 객체 지향 프로그래밍(OOP)의 개념과 PHP에서 이를 어떻게 구현할 수 있는지를 살펴봅니다. 클래스와 객체, 속성과 메서드, 상속, 인터페이스, 다형성 및 접근 제어자에 대해 깊이 있는 이해를 돕기 위해 단계별로 설명하겠습니다.
1. 객체 지향 프로그래밍 개념
객체 지향 프로그래밍(OOP)은 데이터를 객체로 구성하여 프로그래밍을 하는 패러다임입니다. OOP는 다음과 같은 주요 개념을 포함합니다.
· 클래스: 객체를 생성하기 위한 템플릿 또는 청사진입니다.
· 객체: 클래스에서 생성된 인스턴스입니다.
· 속성: 객체의 데이터나 상태를 저장하는 변수입니다.
· 메서드: 객체의 동작을 정의하는 함수입니다.
· 상속: 기존 클래스를 바탕으로 새로운 클래스를 정의하는 기능입니다.
· 인터페이스: 클래스가 구현해야 하는 메서드의 집합입니다.
· 다형성: 같은 메서드 이름이 다른 클래스에서 다르게 동작할 수 있는 기능입니다.
2. 클래스와 객체
2-1. 클래스 정의
클래스는 객체를 생성하기 위한 구조를 정의합니다. 클래스는 속성과 메서드를 포함할 수 있습니다.
<?php
class Car {
// 속성
public $brand;
public $model;
// 생성자
public function __construct($brand, $model) {
$this->brand = $brand;
$this->model = $model;
}
// 메서드
public function displayInfo() {
return "Brand: " . $this->brand . ", Model: " . $this->model;
}
}
?>
2-2. 객체 생성
클래스를 사용하여 객체를 생성할 수 있습니다.
<?php
$myCar = new Car("Toyota", "Corolla");
echo $myCar->displayInfo(); // 출력: Brand: Toyota, Model: Corolla
?>
3. 속성과 메서드
3-1. 속성 (Properties)
속성은 객체의 상태를 정의합니다. 접근 제어자에 따라 외부에서 접근할 수 있는지 여부가 결정됩니다.
<?php
class Person {
public $name; // 공용 속성
private $age; // 개인 속성
protected $address; // 보호 속성
public function __construct($name, $age, $address) {
$this->name = $name;
$this->age = $age;
$this->address = $address;
}
}
?>
3-2. 메서드 (Methods)
메서드는 객체가 수행할 수 있는 동작을 정의합니다. 속성과 마찬가지로 접근 제어자를 사용하여 접근 권한을 설정할 수 있습니다.
<?php
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function greet() {
return "Hello, my name is " . $this->name;
}
}
?>
4. 상속, 인터페이스, 다형성
4-1. 상속 (Inheritance)
상속은 기존 클래스를 기반으로 새로운 클래스를 생성할 수 있는 기능입니다. 자식 클래스는 부모 클래스의 속성과 메서드를 상속받습니다.
<?php
class Animal {
public function eat() {
return "This animal is eating.";
}
}
class Dog extends Animal {
public function bark() {
return "Woof!";
}
}
$dog = new Dog();
echo $dog->eat(); // 출력: This animal is eating.
echo $dog->bark(); // 출력: Woof!
?>
4-2. 인터페이스 (Interface)
인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의합니다. 인터페이스는 다중 상속을 지원합니다.
<?php
interface Drawable {
public function draw();
}
class Circle implements Drawable {
public function draw() {
return "Drawing a circle.";
}
}
$circle = new Circle();
echo $circle->draw(); // 출력: Drawing a circle.
?>
4-3. 다형성 (Polymorphism)
다형성은 동일한 메서드 이름이 여러 클래스에서 다르게 동작할 수 있게 합니다.
<?php
class Bird {
public function fly() {
return "The bird is flying.";
}
}
class Airplane {
public function fly() {
return "The airplane is flying.";
}
}
function letItFly($object) {
echo $object->fly();
}
$bird = new Bird();
$plane = new Airplane();
letItFly($bird); // 출력: The bird is flying.
letItFly($plane); // 출력: The airplane is flying.
?>
5. 접근 제어자 (Access Modifiers)
5-1. public
· 클래스 외부에서 접근할 수 있습니다.
<?php
class Example {
public $value;
public function __construct($value) {
$this->value = $value;
}
}
?>
5-2. private
· 클래스 내부에서만 접근할 수 있습니다.
<?php
class Example {
private $value;
public function __construct($value) {
$this->value = $value;
}
public function getValue() {
return $this->value;
}
}
?>
5-3. protected
· 클래스 내부 및 상속받은 클래스에서 접근할 수 있습니다.
<?php
class ParentClass {
protected $value;
public function __construct($value) {
$this->value = $value;
}
}
class ChildClass extends ParentClass {
public function getValue() {
return $this->value;
}
}
?>
- 이전 수업 목록
'프로그래밍 > PHP' 카테고리의 다른 글
[PHP 수업] 16강 - PHP 프레임워크 소개 (0) | 2024.08.15 |
---|---|
[PHP 수업] 15강 - PHP와 AJAX (0) | 2024.08.14 |
[PHP 수업] 13강 - 데이터베이스 연동 (MySQL) (0) | 2024.08.12 |
[PHP 수업] 12강 - 파일 처리 (0) | 2024.08.09 |
[PHP 수업] 11강 - 세션과 쿠키 (0) | 2024.08.08 |