플라톤이 OOP, 어떤 패러다임에 영향을 줬는지 궁금해 작성한 글입니다. 제가 철학을 좋아해서 정리해봤습니다.
논문을 가져와 AI로 추출했다는 점을 인지해주시기 바랍니다.
플라톤의 철학에서 중심 개념은 '이데아'(Forms)입니다. 이데아론은 다음과 같은 핵심 개념을 포함합니다:
플라톤의 인식론은 이데아론과 깊이 연결되어 있습니다.
플라톤의 정치 철학도 이데아론에 기반을 두고 있습니다.
플라톤의 이데아론에서 이데아는 모든 사물들이 따라야 하는 본질적이고 영원한 형태를 의미합니다. 이는 OOP에서 클래스와 유사합니다. 클래스는 객체들의 설계도이며, 객체들이 가져야 할 속성과 동작을 정의합니다. 따라서 클래스를 이데아로, 객체를 현실 세계의 사물로 생각할 수 있습니다.
플라톤의 이데아론과 객체지향 프로그래밍(OOP)을 연관지어 설명할 수 있는 예시를 TS로 들어보겠습니다.
아래는 Shape
클래스와 이데아를 연관지은 예시코드입니다.
// 'Shape' 클래스는 다양한 도형의 이데아(본질적인 형태)를 나타냅니다.
class Shape {
private sides: number;
constructor(sides: number) {
this.sides = sides;
}
describe(): string {
return `이 도형은 ${this.sides}개의 변을 가지고 있습니다.`;
}
}
// 'Triangle' 클래스는 'Shape' 클래스(이데아)를 상속받아 구현된 구체적인 도형입니다.
class Triangle extends Shape {
constructor() {
super(3); // 이데아로부터 변의 개수를 받아옴 (상속)
}
// 오버라이딩을 통해 이데아에 구체적인 특성을 부여합니다 (다형성).
describe(): string {
return `이 도형은 삼각형이며, ${super.describe()}`;
}
}
// 'Square' 클래스 역시 'Shape' 클래스를 상속받아 구현된 다른 도형입니다.
class Square extends Shape {
constructor() {
super(4); // 이데아로부터 변의 개수를 받아옴 (상속)
}
describe(): string {
return `이 도형은 사각형이며, ${super.describe()}`;
}
}
// 실제로 'Triangle'과 'Square' 객체를 생성하여 이데아(클래스)의 개념을 구체화합니다.
const triangle = new Triangle();
const square = new Square();
console.log(triangle.describe()); // 출력: 이 도형은 삼각형이며, 이 도형은 3개의 변을 가지고 있습니다.
console.log(square.describe()); // 출력: 이 도형은 사각형이며, 이 도형은 4개의 변을 가지고 있습니다.
Shape
클래스는 플라톤의 이데아처럼 모든 도형이 가져야 할 본질적인 속성(변의 개수)을 정의합니다. 이 클래스를 기반으로 다양한 도형 객체가 생성됩니다.
Triangle
과 Square
객체는 Shape
클래스를 구체화한 예시입니다. 이는 현실 세계의 사물들이 이데아의 모방인 것과 유사합니다.