9.1. 객체지향 설계 원칙

약 6분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

9.1. 객체지향 설계 원칙

객체지향 프로그래밍(OOP)의 핵심은 현실 세계의 개념을 프로그램에 도입하여 더 간단하고 직관적인 구조로 개발하는 것입니다. Java 언어는 OOP를 철저히 지원하며, 이를 통해 개발자는 재사용 가능하고, 유지보수하기 쉬운 코드를 작성할 수 있습니다. 객체지향 설계 원칙은 이러한 OOP의 기본 원칙을 제공합니다.

객체지향 설계 원칙 설명

  1. Class(클래스) : 클래스는 객체를 생성하기 위한 설계도입니다. 특정 객체의 특성과 동작을 정의하며, 실제 객체는 이 클래스를 기반으로 생성됩니다.
  2. Object(객체) : 객체는 클래스로부터 생성된 인스턴스입니다. 객체는 데이터와 동작을 함께 가집니다.
  3. Constructor(생성자) : 객체가 생성될 때 호출되는 함수로, 객체의 초기화를 담당합니다.
  4. Encapsulation(캡슐화) : 객체의 내부 상태를 숨기고 외부에서는 메소드를 통해서만 접근하도록 만드는 개념입니다. 이를 통해 데이터 보호와 코드의 무결성을 유지합니다.
  5. Inheritance(상속) : 기존 클래스를 기반으로 새로운 클래스를 정의할 수 있는 기능입니다. 상위 클래스의 속성과 메소드를 하위 클래스가 상속받아 사용할 수 있습니다.
  6. Polymorphism(다형성) : 같은 메소드 이름을 가지고 다양한 형태로 동작할 수 있는 능력입니다. 주로 메소드 오버라이딩과 오버로딩을 통해 구현됩니다.
  7. Abstract Class(추상 클래스) : 객체를 완전히 생성할 수 없는 클래스입니다. 주로 하위 클래스에서 구현되어야 하는 메소드를 정의합니다.
  8. Interface(인터페이스) : 클래스가 특정 메소드를 반드시 구현하도록 요구하는 계약입니다. 다중 상속의 문제를 해결합니다.
  9. Package(패키지) : 관련 클래스들을 그룹화하여 관리하는 방법입니다. Java의 네임스페이스를 제공하여 클래스 충돌을 방지합니다.
  10. Access Modifier(접근 제어자) : 클래스, 메소드, 변수의 접근 범위를 제어하는 키워드입니다. public, private, protected, default가 있습니다.

객체지향 개념 예제

다음은 간단한 학생(Student) 클래스를 정의하는 예제입니다.

public class Student {
    private String name; // 학생 이름
    private int age; // 학생 나이

    // 생성자
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter 메소드
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

위 코드는 Student 클래스를 정의하고, 나이와 이름을 갖는 학생 객체를 생성할 수 있도록 합니다. private 접근 제어자를 사용하여 직접적인 접근을 막고, getter 메소드를 통해서만 외부에서 상태를 확인할 수 있도록 캡슐화를 구현합니다.

실습

  • Student 클래스를 사용하여 여러 학생 객체를 생성하세요.
  • 생성한 학생 객체의 데이터를 출력하는 메소드를 추가해보세요.

프로젝트

  1. 학생관리 프로그램 : 위의 객체지향 설계를 기반으로 학생 관리 기능을 포함한 전체 프로그램을 개발합니다.
  2. MVC 패턴을 적용하여 프로그램의 구조를 깔끔하게 유지합니다. 최종적으로 학생 리스트를 출력하는 기능을 추가합니다.

정리

객체지향 설계 원칙은 유지보수성을 높이고 코드의 재사용성을 증가시키기 위한 중요한 개념입니다. 이 원칙들을 이해하고 실제 프로젝트에 적용하는 것이 필수적입니다. 다음 장에서는 Collection Framework와 Lambda Expression에 대해 다룰 예정입니다. Java의 진정한 힘을 활용한 프로그램을 작성해주세요!

코드 java
public class Student {
    private String name; // 학생 이름
    private int age; // 학생 나이

    // 생성자
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter 메소드
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.