Paradox Simulation

728x90
반응형

 

안녕하세요, 이번에는 객체지향 프로그래밍의 개념과 특징에 대해 알아보겠습니다.

 

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

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나입니다.
객체지향 프로그래밍에서는 모든 것을 객체(Object)로 취급합니다.
객체는 데이터와 해당 데이터를 처리하는 기능을 가진 프로그램의 단위입니다.
이러한 객체를 이용하여 프로그래밍을 하는 것이 객체지향 프로그래밍입니다.

 

반응형

객체지향 프로그래밍의 특징

1. 캡슐화(Encapsulation)

객체지향 프로그래밍에서는 데이터와 해당 데이터를 처리하는 기능을 하나로 묶어 캡슐화합니다.
캡슐화된 객체는 내부 구현을 숨기고, 외부에서는 객체의 인터페이스만을 통해 객체에 접근할 수 있습니다.
이러한 캡슐화는 데이터의 안정성과 보안을 보장해줍니다.

 

2. 상속(Inheritance)

객체지향 프로그래밍에서는 상속 개념을 도입하여, 이미 정의된 클래스를 기반으로 새로운 클래스를 만들 수 있습니다.
이러한 상속은 코드의 재사용성을 높여줍니다.

 

3. 다형성(Polymorphism)

객체지향 프로그래밍에서는 다형성 개념을 도입하여, 같은 타입이지만 서로 다른 객체를 참조할 수 있습니다.
이러한 다형성은 코드의 유연성과 확장성을 높여줍니다.

4. 추상화(Abstraction)

객체지향 프로그래밍에서는 추상화 개념을 도입하여, 객체가 가지는 속성과 기능 중에서 필요한 것만을 추출하여 모델링합니다.
이러한 추상화는 복잡한 문제를 단순하게 모델링할 수 있게 해줍니다.

 

예시 코드

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("뽀삐", 3);
        dog.move();
        dog.bark();

        Animal animal = new Animal("동물", 10);
        animal.move();

        Animal dogAsAnimal = new Dog("초코", 2);
        dogAsAnimal.move();
        // dogAsAnimal.bark();  // 컴파일 에러 발생
    }
}

위 코드에서는 Animal 클래스를 상속받아 Dog 클래스를 정의하고 있습니다.
Dog 클래스는 Animal 클래스의 move() 메서드를 오버라이딩하여, "이동합니다." 대신 "걷습니다." 라는 메시지를 출력합니다.
또한, Dog 클래스에는 bark() 메서드가 추가되어 있습니다.

Main 클래스에서는 다양한 방법으로 객체를 생성하고, 객체지향 프로그래밍의 특징을 활용하여 다형성을 보여주고 있습니다.
첫 번째로 생성한 dog 객체는 Dog 클래스의 인스턴스입니다. dog.move() 메서드를 호출하면 Dog 클래스에서 정의한 move() 메서드가 호출되어 "걷습니다." 라는 메시지가 출력됩니다.

두 번째로 생성한 animal 객체는 Animal 클래스의 인스턴스입니다.
animal.move() 메서드를 호출하면 Animal 클래스에서 정의한 move() 메서드가 호출되어 "이동합니다." 라는 메시지가 출력됩니다.

세 번째로 생성한 dogAsAnimal 객체는 Animal 클래스의 인스턴스인 동시에 Dog 클래스의 인스턴스입니다.
이러한 객체는 다형성을 활용하여 Animal 타입의 변수에 대입될 수 있습니다.
dogAsAnimal.move() 메서드를 호출하면 Dog 클래스에서 오버라이딩한 move() 메서드가 호출되어 "걷습니다." 라는 메시지가 출력됩니다.
하지만, dogAsAnimal.bark() 메서드를 호출하면 컴파일 에러가 발생합니다
이는 dogAsAnimal이 Animal 타입으로 선언되어 있기 때문에, Dog 클래스에서 추가한 bark() 메서드를 호출할 수 없기 때문입니다.

 

마무리

이번 글에서는 객체지향 프로그래밍의 개념과 특징에 대해 알아보았습니다.
객체지향 프로그래밍은 캡슐화, 상속, 다형성, 추상화 등의 개념을 활용하여 코드의 재사용성, 유연성, 확장성을 높일 수 있습니다.
다음 글에서는 상속과 다형성의 개념에 대해 좀 더 자세히 다루어보겠습니다.

728x90
반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
250x250