OOP
-
객체 지향 설계는 컴퓨터 프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리하며, 객체 지향 설계는 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있게 해준다. 이러한 유연함은 다형성을 통해 구현된다. 결론적으로 다형성의 본질은 유연한 변경이다. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능, 즉 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다. 또한 인터페이스를 안정적으로 잘 설계하는 것도 중요하다.좋은 객체 지향 설계를 위한 SOLID라는 5가지 원칙이 존재한다.1. SRP 단일 책임 원칙Single responsibility principle"한 클래스는 하나의 ..
SOLID객체 지향 설계는 컴퓨터 프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리하며, 객체 지향 설계는 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있게 해준다. 이러한 유연함은 다형성을 통해 구현된다. 결론적으로 다형성의 본질은 유연한 변경이다. 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능, 즉 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다. 또한 인터페이스를 안정적으로 잘 설계하는 것도 중요하다.좋은 객체 지향 설계를 위한 SOLID라는 5가지 원칙이 존재한다.1. SRP 단일 책임 원칙Single responsibility principle"한 클래스는 하나의 ..
2024.10.27 -
우선 절차적 프로그래밍과 객체지향 프로그래밍은 서로 대조되는 개념이 아니다. 서로 상반되는 개념이 아니며 절차적 프로그래밍의 한계점들과 문제를 해결하기 위해 객체지향 프로그래밍 방식이 개발되었다.절차적 프로그래밍절차적 프로그래밍은 순차적인 처리를 바탕으로 프로그램 전체가 유기적으로 실행되도록 한 프로그래밍 방식이다. 절차적 프로그래밍은 procedure를 이용하여 작성되는데, procedure에는 루틴, 서브루틴, 함수 등이 존재한다.루틴프로그램에서 반복적이거나 독립적으로 실행할 수 있는 코드 블럭을 뜻하며 main문 외에도 서브루틴이나 함수 역시 루틴으로 간주됨서브루틴main문 밖에서 정의된 코드 블럭이며 반환값이 없는 작업을 수행함void printMessage() {...}함수main문 밖에서 정의..
절차적 프로그래밍 vs 객체지향 프로그래밍우선 절차적 프로그래밍과 객체지향 프로그래밍은 서로 대조되는 개념이 아니다. 서로 상반되는 개념이 아니며 절차적 프로그래밍의 한계점들과 문제를 해결하기 위해 객체지향 프로그래밍 방식이 개발되었다.절차적 프로그래밍절차적 프로그래밍은 순차적인 처리를 바탕으로 프로그램 전체가 유기적으로 실행되도록 한 프로그래밍 방식이다. 절차적 프로그래밍은 procedure를 이용하여 작성되는데, procedure에는 루틴, 서브루틴, 함수 등이 존재한다.루틴프로그램에서 반복적이거나 독립적으로 실행할 수 있는 코드 블럭을 뜻하며 main문 외에도 서브루틴이나 함수 역시 루틴으로 간주됨서브루틴main문 밖에서 정의된 코드 블럭이며 반환값이 없는 작업을 수행함void printMessage() {...}함수main문 밖에서 정의..
2024.10.27 -
is-a 관계와 has-a 관계는 클래스들의 관계를 표현할 때 사용된다.is-ais-a 관계는 말그대로 A는 B이다(A is B) 관계를 나타낸다.예를 들어보자. "사과는 과일이다" 라는 문장은 맞는 말이다. 그렇다면 "과일은 사과이다" 라는 문장은 맞는 말일까? 물론 아니다. 과일에는 사과 외에 다른 과일들도 들어갈 수 있기 때문이다.이러한 관계는 클래스들 사이에서 상속 관계로 나타낼 수 있다. "사과는 과일이다" 라는 문장에서 과일은 사과의 부모 클래스가 되고 다음과 같이 나타낼 수 있다.public class Fruit { int price; String color;}public class Apple extends Fruit { int sweetness_level;}has-ahas-..
is-a 관계와 has-a 관계is-a 관계와 has-a 관계는 클래스들의 관계를 표현할 때 사용된다.is-ais-a 관계는 말그대로 A는 B이다(A is B) 관계를 나타낸다.예를 들어보자. "사과는 과일이다" 라는 문장은 맞는 말이다. 그렇다면 "과일은 사과이다" 라는 문장은 맞는 말일까? 물론 아니다. 과일에는 사과 외에 다른 과일들도 들어갈 수 있기 때문이다.이러한 관계는 클래스들 사이에서 상속 관계로 나타낼 수 있다. "사과는 과일이다" 라는 문장에서 과일은 사과의 부모 클래스가 되고 다음과 같이 나타낼 수 있다.public class Fruit { int price; String color;}public class Apple extends Fruit { int sweetness_level;}has-ahas-..
2024.10.27