R's Hacking Daily Log

php 객체 지향 프로그램 (1) 본문

PHP

php 객체 지향 프로그램 (1)

hanhxx 2023. 7. 10. 12:22

Step 1 :: 객체 지향 프로그래밍

객체 지향 프로그래밍이란 단순한 문법이나 코딩 스타일이 아닌 하나의 패러다임이라 할 수 있다.

 

객체가 고유의 기능을 수행하고 서로 간의 상호 작용도 하면서

프로그램의 전반적인 기능이 구축되는 걸, 객체 지향 프로그램이라 할 수 있다. 

 

객체 지향 프로그래밍을 하기 위해서는 실재하는 대상을 소프트웨어 상으로 옮기는 과정,

추상화가 필요하다. 

 

** 추상화란

객체의 핵심점인 특징, 개념, 기능을 추출하여 표현하는 것을 말한다.

예를 들어 코끼리를 추상화한다면 "다리가 4개 있고 몸무게가 많이 나가며 코가 길다"라고 할 수 있다. 

 

 


Step 2 :: 클래스와 객체 [ Class & Object ]

그렇다면 객체란 무엇이며 코드 상에서 어떻게 만들어낼 수 있을까?

객체란 주체가 인식할 수 있는 어떠한 대상을 일컫는 말로

PHP에서 객체란 클래스로 만들어낸 인스턴스라고도 할 수 있다.

 

car A : white, 9인승, 휘발유
car B : Grey, 4인승, 전기차
car C : black, 4인승, 휘발유

서로 다른 자동차 3대가 있다고 상상해보자. 색상이나 최대 인승 등의 속성은 차이가 날지라도

A, B, C는 바퀴가 4개 달린 자동차라는 점은 공통적이다. 

 

그렇다면 추상화의 개념으로 다가갔을 때

"자동차의 공통적인 측면을 나타낼 이 있고 그 틀에 부품을 조금씩 다르게 넣어 A, B, C가 나왔구나!"라고 

생각할 수 있다. 

 

! 이때 사용하는 틀이 클래스이고 클래스로 만들어낸 결과물이 객체(인스턴스)인 셈이다. 

이해를 돕기 위해 코드 상으로 표현해보면 

<?php
Class Car {
    public $color;
    public $maxSeat;
    public $oil;
}

$a = new Car();
$a->color = 'white';
$a->maxSeat = 9;
$a->oil = '휘발유';

$b = new Car();
$b->color = 'black';
$b->maxSeat = 4;
$b->oil = '경유'

1) Car라는 클래스로 $a라는 인스턴스를 만들어내면 [ $a = new Car() ]

2) $a는 color, maxSeat, oil이라는 특성을 달리 가질 수 있는 하나의 객체가 된다. [ ex) $a->color = 'white' ]

이때 자동차 A는 흰 색상에 최대 9명까지 탑승이 가능한, 휘발유를 사용하는 자동차로 만들어진다. 

3) $b라는 자동차도 하나 만들어서 a와는 다른 특성값을 부여해준다. 

 

이렇게 되면 Car라는 공통적인 틀로 자동차를 만들지만 각각의 특성을 달리 부여함으로써 서로 다른 객체를 만들어낼 수 있다. 


Step 3 :: Property & Method 

위에서 살펴보았듯이 객체는 클래스로 만들어진다. 

그렇다보니 클래스에는 객체의 공통적인 속성이나 기능을 정의할 수 있는데

 

클래스가 가지는 속성은 변수로 나타내며 proterty 또는 멤버 변수라고 부른다.

클래스가 가지는 기능은 함수로 정의되며 Method 또는 멤버 함수라고 부른다. 

 

따져보면 일반적인 변수 & 함수와 똑같지만 클래스 내부에 있다는 이유로 이름이 달라졌다고

생각하면 된다.

 

<?php
Class Car {
    public $color = 'white';
    
    function turnOn() {
        echo "시동을 건다";
    }
}

$car = new Car();
echo $car->color;
$car->turnOn();

Class keyword를 사용해 클래스를 생성할 수 있다.

Car라는 클래스를 만드는 데 color라는 property와 turnOn이라는 Method를 가지고 있는 걸 확인할 수 있다.

 

클래스로 만들어낸 객체 car는 Car 클래스로 만들어냈기 때문에 

Car 클래스에 정의된 변수와 함수를 가지고 있다.

 

property & Method에 접근하기 위해서는 객체에서 화살표 기호로 빠져나와

접근하고자 하는 변수나 함수 이름을 지정하면 된다. 

 

코드 실행 결과를 보면 Class에서 정의한 변수와 함수를 객체 car에서도 지니고 있는 걸 확인할 수 있다. 

'PHP' 카테고리의 다른 글

php 객체 지향 프로그램 (3)  (0) 2023.07.13
php 객체 지향 프로그램 (2)  (0) 2023.07.12
php 함수 (3)  (0) 2023.07.06
php 함수 (2)  (0) 2023.07.05
php 함수 (1)  (0) 2023.07.05
Comments