일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 평창동계올림픽
- MST
- lower_bound
- 삼성 코딩테스트
- 안드로이드 스튜디오
- 생활코딩
- upper_bound
- 언어의 온도
- multiset
- 성화봉송
- DP
- Segment Tree
- 성화봉송주자
- 위상정렬
- boj
- 창훈쓰다
- BFS
- 다음 지도 api
- BOJ 2098
- 다음 API
- 인간이 그리는 무늬
- 영어회화 100일의 기적
- 캘리그라피
- 다이나믹 프로그래밍
- 이분탐색
- 백트레킹
- 그리디 알고리즘
- 비트마스크
- yolo
- 외판원 순회
- Today
- Total
목록코딩/교육 (36)
Hoon222y
컴포지트 패턴(Composite pattern) : 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114package Composite;import java.io.IOException;import java.u..
디자인 패턴 : 반복적으로 발생하는 문제들을 설명하고, 이에 대한 해결방안을 설명하는 학문리팩토링 : 프로그램이 동작을 변경하지 않고, 내부 구조를 변경하는 유지보수의 개념 -> 디자인 패턴은 궁극적인 목표이고, 리팩토링은 이에 대한 방법론이라고 볼 수 있다. 예제를 통해서 진행하자123456789101112131415161718192021222324252627package refactoring; public class test1 { public static void main(String[] args) { new Server().run(); }} // 어떤 기능을 제공하는 서버가 있다고 합니다.class Server{ // 서버를 구동하려면 아래의 메서드를 호출하면 됩니다. public void run(..
옵저버 패턴 : 객체의 상태 변화를 관찰하고 이를 처리하기 위한 디자인 패턴이다. 이벤트가 발생될 객체에 옵저버 객체들을 등록하고, 상태변화가 있을때마다 메서드 등을 통해 객체가 등록된 옵저버들의 메서드를 호출하여 옵저버에게 알려준다 . 옵저버 패턴 : 객체의 상태 변화를 관찰하려는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버들에게 통지하도록 하는 디자인 패턴 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package Observer; import java.util.ArrayList; public class main { pu..
어댑터 패턴 : 클래스와 인터페이스를 사용자가 기대하는 다른 인터페이스로 전환하는 기법 객체지향 프로그래밍에서 어댑터 패턴을 구현하는 방법1. 상속(비추) - 기존 객체의 멤버들도 외부에 노출되므로 객체의 상태가 불안해진다.2. 포함 - 기존 객체의 멤버들이 외부로 노출되지 않으므로 상속보다 상대적으로 안전하다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667import java.util.ArrayList; //extends ArrayList를 쓰기위함import java.util.Stack; public class main { ..
123456789101112131415161718192021222324public class inheritanceTest { public static void main(String[] args) { Medic medic = new Medic(); Marine marine = new Marine(); // marine = medic //는 에러, 서로다른 타입이기 때문에 Human h1 = medic; //부모타입 = 자식 객체, 업케스팅(upcasting) Human h2 = marine; // 관련이 없는 타입은 처리할 수 없으므로 타입안정성이 높아지게 된다. // Human h3 = new Hydra(); // 상속을 사용하는 이유 // 기능적 : 코드의 재사용성 // 디자인 : 서로 다른 타입을 동..
상속 : 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것을 의미한다. 상속을 하는 주체를 부모 클래스하고 하고, 상속을 받는 주체를 자식클래스 라고 한다. 이때 상속되지 않는것은 : 생성자, 소멸자 , 대입연산자 , 정적멤버, friend 함수이다. 상속을 하려면 class 클래스명 : public 클래스명 으로 사용한다. 그렇다면 상속에서 생성자와 소멸자는 어떻게 작동하는지 알아보자. 123456789101112131415161718#include using namespace std; //상속 관계에서 생성자와 소멸자의 호출 순서//자식 생성자-> 부모 생성자 -> 자식 생성자 -> 자식 소멸자 -> 부모 소멸자class Parent{public: Parent(){ cout
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768//rule of 3//1. 복사 생성자 2. 소멸자 3. 대입연산자//대입 연산자 오버로딩 #include using namespace std; class Person{ char *name; int age;public: Person() :name(0), age(0){} Person(const char * n, int a) : age(a){ name = new char[strlen(n) + 1]; strcpy(name, n); } //만약 클래스 내부에서 동적 할당된 자원이 있다면..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546//첨자 연산자 오버로딩#include using namespace std; class IntArray{ int* buf; int size;public: IntArray(int sz = 10): size(sz){ buf = new int[size]; } int length() const{ return size; } //아래의 코드가 동작될 수 있도록 함수를 변경하라.(리턴 타입을 int에서 int&로 바꿈) //첨자 연산자를 반환할 때는 참조 타입을 반환해야 하는데 그 이우는 값의 대입(=) 때문이다. int& operator[](int idx){ //이 함..
연산자 오버로딩 : 클래스에 대한 연산자를 정의하여 t3 = t2+t1; 처럼 객체끼리 연산할 수 있도록 만드는 문법이다. 12345678910111213141516171819202122232425262728293031#include using namespace std;class Int32{ int v;public: Int32(int val = 0) : v(val){} void print() const{ cout
123456789101112131415161718192021222324252627282930#include using namespace std;//mutable : 상수 멤버 함수 안에서 값의 수정을 가능하게 하는 키워드struct Cache{ mutable char str[32]; mutable bool is_cached; Cache(bool cached = false) : is_cached(cached){}};class Point{public: int _x, _y; Cache* pCache; Point(int x, int y) : _x(x), _y(y), pCache(new Cache){}; ~Point(){ delete pCache; } //동적할당 했으니 소멸자로 해제해준다. const char*..