일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- datastructure
- 메모리구조
- list 컬렉션
- Selection Sorting
- Graph
- 윤성우 열혈자료구조
- 알기쉬운 알고리즘
- coding test
- Serialization
- 윤성우의 열혈 자료구조
- buffer
- s
- Stack
- 혼자 공부하는 C언어
- C programming
- Algorithm
- stream
- 이것이 자바다
- JSON
- insertion sort
- R
- 이스케이프 문자
- C 언어 코딩 도장
- Today
- Total
목록Computer Science/OOP & Design Pattern (5)
TechBlog
Strategy Pattern- 특정 정책에 대한 책임을 가지고 있는 클래스를 컨텍스트 라고 부르는데, 이러한 특정 컨텍스트에서 알고리즘(전략)을 분리하는 설계 방법. 상황- 상황에 따라 다른 가격할인 정책을 적용하는 과일매장이 있다. '첫 손님 할인' 정책, '저녁 시간 신선한 과일 할인 정책' 이럴 때 전략패턴을 적용하지 않으면 가격 계산 모듈에 if-else같은 분기문으로 할인 정책을 구현해서 메서드를 개발할 수 있다.
프로젝트를 하면서 처음에 작성한 코드가 나중에 객체지향의 5대 원칙 중 2번 째 원칙 OCP개방 폐쇄 원칙- 소프트웨어 객체(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. OCP의 효과- OCP가 잘 적용된다면, 이미 제대로 동작하고 있던 원래 코드를 변경하는 것이 아니라 새로운 코드를 덧붙임으로써 나중에 그런 변경을 할 수 있게 된다. 개방 폐쇄 원칙의 속성1. 확장에 대해 열려 있다.- 애플리케이션의 요구사항이 변경될 때, 이 변경에 맞게 새로운 행위를 추가해 모듈을 확장할 수 있다. 2. 수정에 대해 닫혀 있다.- 어떤 모듈의 행위를 확장하는 것이 그 모듈의 소스 코드나 바이너리 코드의 변경을 초래하지 않는다.
객체지향프로그래밍 에서 역할, 책임, 협력 그리고 캡슐화, 상속, 추상화의 관계 객체지향 프로그래밍은 길을 찾는 방법을 통해서 설명할 수 있다. 길을 찾을 때 길을 아는 사람에게 물어보는 방법이 있고, 지도를 보고 찾아가는 방법이 있다. 길을 아는 사람에게 물어보는 방법은 길찾기라는 기능 그 자체에 초점을 맞춘 해결책이라고 볼 수 있다. 그런데 지도는 현실 세계를 추상화한 모델로, 구조적으로 길을 찾는 방법을 알려준다. 그리고 원래 목적지와 다른 길을 찾는 범용적인 도구다. 객체지향 프로그래밍은 길을 찾는 방법에서 지도를 보고 길을 찾는 방법과 유사하다. 기능에 구조를 맞추는게 아니라, 구조에 기능을 종속시킨다. 이를 통해 얻을 수 있는 장점은 재사용가능하고, 변경에 용이한 코드를 작성할 수 있게 해준다..
Object Oriented Programming(객체 지향 프로그래밍) 단어 그대로 객체 지향적으로 프로그래밍을 한다는 뜻이다. 프로그래밍이란 생각, 명령어의 나열이다. 그런데 객체 지향이라는 뜻은 무엇일까? 프로그래밍을 할때 Object, 객체를 중심으로 프로그래밍한다는 말이다. 즉, 이 세상은 객체(object)로 이루어져 있고, 객체를 중심으로 프로그램을 설계하겠다는 것이다. 이 세상에는 수 많은 사람, 개인이 존재한다. 모두 객체이다. 사람에게 객체라고 하면 기분나쁘게 들릴 수도 있으나, 창조자(개발자)의 입장에서는 객체이다. 기분이 나쁘면 개체라고 이해해도 된다. 그런데 이렇게 전부 다른 특징의 객체를 매번 생성하기 보다는 객체들을 분류(Class)해서 생성하는 방식으로 프로그래밍을 한다면 개..
Object Oriented 객체지향의 기본 개념은 원자 세계를 SW 비트세계로 옮기기 위해 실제 세계를 객체(사물)을 중심으로 바라보는 것이다. 다시 말하면 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 관점이다. 실제 사물의 속상과 기능을 분석한 다음, 데이터(변수)와 메서드(함수)로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같은 가상 세계를 구현하는 것이다. Object Oriented Programming 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업 Object 객체, 현실 세계에 존재하는 사물 또는 개념에 대한 추상화