이것저것

OOP 개발

spaces25 2025. 5. 23. 09:53
반응형

객체지향 프로그래밍(OOP, Object-Oriented Programming)은 객체라는 개념을 중심으로 소프트웨어를 설계하고 개발하는 방법입니다. 객체는 상태(속성)와 행동(메서드)을 가지는 독립적인 단위입니다. OOP는 코드의 재사용성, 유지보수성, 확장성을 높이는 데 큰 장점이 있음..


✅ OOP의 4대 핵심 개념

  1. 캡슐화 (Encapsulation)
    • 객체 내부의 데이터(속성)를 외부에서 직접 접근하지 못하게 하고, 메서드를 통해서만 접근하도록 제한함
    • → private, protected, getter/setter 등을 사용
  2. 상속 (Inheritance)
    • 기존 클래스(부모 클래스)의 속성과 메서드를 새로운 클래스(자식 클래스)가 물려받는 것
    • 코드 중복을 줄이고, 계층적 관계를 표현
  3. 다형성 (Polymorphism)
    • 같은 인터페이스나 부모 클래스를 통해 다양한 방식으로 동작 가능
    • 메서드 오버라이딩, 오버로딩
  4. 추상화 (Abstraction)
    • 복잡한 내부 구현은 숨기고, 필요한 기능만을 인터페이스로 제공
    • 인터페이스나 추상 클래스 활용

✅ 간단한 예시 (Python)

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

# 다형성 예시
animals = [Dog("Buddy"), Cat("Whiskers")]

for animal in animals:
    print(animal.speak())

✅ OOP의 장점

  • 코드 재사용성 (Inheritance)
  • 유지보수 용이 (Encapsulation)
  • 확장성 우수 (Polymorphism)
  • 현실 세계와 유사한 구조로 설계 가능 (객체 모델링)

 

 

✅ PHP OOP 핵심 구성 예시

1. 클래스 및 객체 생성

<?php
class Animal {
    public $name;

    // 생성자
    public function __construct($name) {
        $this->name = $name;
    }

    public function speak() {
        echo "$this->name makes a sound.";
    }
}

// 객체 생성
$dog = new Animal("Buddy");
$dog->speak();  // 출력: Buddy makes a sound.
?>

2. 상속

<?php
class Dog extends Animal {
    public function speak() {
        echo "$this->name says Woof!";
    }
}

$dog = new Dog("Max");
$dog->speak();  // 출력: Max says Woof!
?>

3. 캡슐화 (접근 제한자)

<?php
class User {
    private $password;

    public function setPassword($pwd) {
        if (strlen($pwd) >= 6) {
            $this->password = $pwd;
        } else {
            echo "비밀번호는 최소 6자 이상이어야 합니다.";
        }
    }

    public function getPassword() {
        return str_repeat("*", strlen($this->password));
    }
}

$user = new User();
$user->setPassword("secure123");
echo $user->getPassword();  // 출력: *********
?>

4. 추상 클래스와 인터페이스

<?php
abstract class Animal {
    public $name;
    public function __construct($name) {
        $this->name = $name;
    }

    abstract public function speak();
}

class Cat extends Animal {
    public function speak() {
        echo "$this->name says Meow!";
    }
}
?>

✅ PHP OOP의 장점

  • 코드 재사용: 상속 및 트레잇을 통해 기능 공유
  • 코드 가독성 향상: 클래스로 기능을 구분
  • 보안성 증가: 접근 제한자 사용으로 데이터 보호
  • 테스트 용이: 의존성 주입과 클래스 단위 테스트 가능
반응형