본문 바로가기

전체 글31

2-2. SOLID(S.O.L.I.D) 지난 포스팅에 이어 LSP, ISP, DIP에 대해 알아보도록 하겠습니다. ▣ LSP (Liskov Substitution Principle) Subclasses should be substitutable for their base classes - Robert C.Martin - LSP는 자식 클래스는 부모 클래스를 대체 할 수 있어야 하며, 부모 클래스 객체 대신 자식 클래스를 사용했을 때 문제없이 프로그램이 동작해야한다는 원칙입니다. 정사각형과 직사각형을 생각해볼까요? 정사각형은 직사각형의 일부, 즉 부분집합이라고 생각할 수 있습니다. 즉 아래 그림과 같이 직사각형 클래스를 상속받아 정사각형 클래스를 구현할 수 있습니다. Java 코드를 통해 직사각형 클래스와 정사각형 클래스를 구현해보겠습니다. p.. 2023. 10. 18.
2-1. SOLID(S.O.L.I.D.) ▣ What is "SOLID"? SOLID(S.O.L.I.D.)는 미국의 프로그래머 Robert C. Martin이 2000년에 발표한 논문 "Design Principles and Design Patterns")에서 발표한 5가지의 소프트웨어 설계 원칙입니다. 이해하기 쉽고, 유연하며, 유지 보수가 쉬운 소프트웨어 개발을 위한 원칙들이죠. 그 5가지의 원칙은 아래와 같습니다. - SRP : Single Responsibility Principle (단일 책임 원칙) - OCP : Open-Closed Principle (개방-폐쇄 원칙) - LSP : Liskov Substituion Principle (리스코프 치환 원칙) - ISP : Interface Segregation Principle (인.. 2023. 10. 16.
1. Software Design Pattern ▣ 디자인 패턴(design pattern)이란? 영어 위키백과에 있는 정의를 통해 디자인 패턴의 정의가 무엇인지 알아보겠습니다. In software enginerring, a software design pattern is a general, reusable solution to a commonly ocurring problem within a given context in software design. It is not a finished design that can be transformed directly int source or machine code. Rather, it is a description or template for how to solve a problem that can be .. 2023. 10. 6.
4. 큐(Queue) ▣ 큐(Queue) ■ 큐는 지난 포스팅에서 다루었던 스택(Stack)과 반대로 선입선출(FIFO : First-In First-Out)의 특징을 가지는 자료구조입니다. 가장 먼저 삽입(enqueue)된 데이터가 가장 먼저 삭제(dequeue)되는 구조를 가집니다. ■ 쉬운 예를 들어보자면, 식료품 상점에서 재고를 정리하는 것을 상상해보시면 됩니다. 각 상품에는 유통기한이 있고, 때문에 먼저 창고에 들어온 물건을 먼저(앞에) 진열 해야 합니다. 먼저 진열된 물건은 소비자에 의해 먼저 소비될 것입니다. 큐 또한 이와 마찬가지로 먼저 큐에 들어온 자료(data)가 먼저 삭제됩니다. ■ 스택에서 자료의 추가와 삭제가 스택의 top에서만 이루어졌던 것과 대조적으로, 큐에서는 자료의 추가와 삭제가 양방향에서 이루.. 2023. 10. 5.
3. 스택(Stack) ▣ 스택(Stack) ■ 스택이란 후입선출(LIFO : Last In, First Out) 구조를 가지는 자료 구조입니다. 가장 나중에 삽입(push) 된 데이터가 가장 먼저 삭제(pop)되는 자료구조입니다. 그리고 자료의 추가와 삭제는 항상 Stack의 Top에서만 이루어집니다. ■ 어려운 개념은 아니지만 예를 들자면, 회전초밥집에 갔을 때 쌓여있는 접시를 생각하면 좋을 것 같습니다. 제일 처음 먹은 접시가 제일 아래에 놓이게 되고, 제일 나중에 먹은 접시가 제일 위에 놓이게 됩니다. 그리고 계산할 때 접시를 하나씩 빼면서 접시의 개수를 센다고 하면, 가장 위에 놓인 접시가 가장 먼저 꺼내집니다. 스택도 마찬가지로 가장 나중에 스택에 들어온 데이터가 가장 먼저 삭제됩니다. ■ 위 그림의 용어의 명칭은 .. 2023. 9. 27.
2. 배열, 포인터 및 구조체 C언어를 조금이라도 공부했던 사람이라면 배열과 포인터는 들어봤을 겁니다. 둘 다 개념은 어렵지 않지만 2차원 이상의 배열은 조금 헷갈릴 수 있는 부분이 있습니다. ▣ 배열(Array) ■ 배열은 연속된 메모리 주소 공간 상에 element가 존재하는 자료구조입니다. 쉽게 말하면, 메모리내에 배열의 각 요소들은 서로 떨어져 있지 않고 붙어 있다는 뜻입니다. ■ C에서 1차원 배열 변수를 선언하는 방법은 아래와 같습니다. 1 int vector[5] = {1,2,3,4,5}; cs int 자리에는 type(char, float, double, long long, 구조체 등)이 들어갈 수 있습니다. 여기서 vector변수의 type은 뭘까요? 그냥 int 배열이라고 말하면 틀린 답입니다. 정확히는 "integ.. 2023. 5. 28.