공부
OOP
yn98
2024. 12. 1. 23:26
객체지향 프로그래밍(OOP, Object-Oriented Programming)
OOP란 객체를 중심으로 프로그램을 설계하고 개발하는 방법론이다.
객체란 데이터와 이를 처리하는 함수(메서드)를 묶어서 하나의 독립적인 단위로 만든 것이다.
OOP 특징
캡슐화
캡슐화는 객체의 데이터와 메서드를 하나로 묶고, 외부에서 직접 접근하지 못하도록 제한한다.
데이터를 보호하기 위해 getter/setter 메서드를 사용한다.
public class Person {
private String name; // private으로 데이터 은닉
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
상속
기존 클래스(부모 클래스)의 기능을 물려받아 새로운 클래스(자식 클래스)를 생성하는 것이다.
코드의 재사용성을 높이고, 확장성을 높이는 데 사용된다.
public class Animal {
public void eat() {
System.out.println("먹는다");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("짖는다");
}
}
다형성
하나의 객체가 여러 가지 형태를 가질 수 있도록 하는 것이다.
부모 클래스 타입으로 자식 클래스를 참조하거나, 메서드 오버라이딩을 통해 구현한다.
public class Animal {
public void sound() {
System.out.println("소리를 낸다");
}
}
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("멍멍");
}
}
public static void main(String[] args) {
Animal animal = new Dog(); // 부모 타입으로 참조
animal.sound(); // "멍멍" 출력
}
추상화
중요한 정보만 추려내고, 불필요한 세부 사항을 감추는 것이다.
추상 클래스를 사용하거나 인터페이스를 활용하여 설계한다.
public abstract class Animal {
public abstract void sound(); // 추상 메서드
}
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("야옹");
}
}
추상화를 통해 공통점을 기반으로 다양한 객체를 정의할 수 있다.
OOP 5대 원칙 (SOLID)
SRP(단일 책임 원칙): 클래스는 하나의 책임만 가져야 한다.
OCP(개방-폐쇄 원칙): 기존 코드는 수정하지 않고 확장할 수 있어야 한다.
LSP(리스코프 치환 원칙): 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
ISP(인터페이스 분리 원칙): 필요한 인터페이스만 구현하도록 설계한다.
DIP(의존 역전 원칙): 고수준 모듈이 저수준 모듈에 의존하지 않아야 한다.