2025/04 14

상속을 이용한 클래스 구현

클래스에 상속이 없다면 구조체에 동작만 추가한 것에 불과하다.그것만으로도 절차형 언어에 비하면 놀라운 발전이지만,상속은 새로운 차원의 기능이 추가된 것이다.상속을 활용하면 기존 클래스를 바탕으로새 클래스를 정의할 수 있다.따라서 클래스는 재사용하거나 확장 가능한 컴포넌트인 것이다.상속의 강력함을 최대한 잘 활용하기 위해서는상속에 관련된 구체적인 문법 뿐만 아니라상속을 최대한 활용하기 위해서는 상속과 관련된 고급 테크닉까지 알아야한다.상속을 이용한 클래스 구현현실에서 존재하는 대상의 대부분은 계층 구조를 가진다.프로그래밍에서도 이와 마찬가지로클래스를 수정하거나 다른 클래스를 바탕으로새 클래스를 정의할 때 이러한 관계를 분명히 볼 수 있다.코드에서 이러한 관계를 다루는 한 가지 방법은기존 클래스를 복사하여 ..

백준 골드4 수묶기 1744

GitHub :https://github.com/kwon1232/CodingTest/tree/main/%EB%B0%B1%EC%A4%80/Gold/1744.%E2%80%85%EC%88%98%E2%80%85%EB%AC%B6%EA%B8%B0 해당 문제는크게 4가지 분류로최대 값의 경우를 구하면 된다. 1. 음수는 가장 작은 음수와 그 다음 작은 음수를 곱해줘서 큰 양수로 만들어 합계에 더해준다. 2. 양수는 큰수와 그 다음 큰 수와 곱해준 뒤 큰 양수로 만들어합계에 더해준다. 3. 1은 따로 셈해준 뒤 합계에 따로 더해주면 된다. 4. 0을 따로 세어주는 이유는 만약 곱해주지 않은 음수가 남았을 때,0을 곱해주면 총 합계에서 남은 음수가 차감되지 않기 때문이다.0을 세어준 뒤 만약 0이 남아 있다면 남은 음..

람다 함수들

람다 함수들 람다도 초보자에겐 생소한데람다 함수"들"? 이라고 하니 좀 더욱 더 생소할 것이다. 지금부터 람다에 대해서 간략하게 설명하겠다. 람다(lambda) 함수(람다 표현식 또는 간단히 람다라고도 함)를 보면초보 프로그래머에게 도움이 될 수 있도록 추가된C++11의 기능이 아니라고 의심할 수 있다.람다 함수는 겉보기에도 그런 의구심을 가질 수 있기 때문이다.람다 함수의 예제이다. [&count] (int x} {count += (x % 13 == 0);}  하지만 보이는 것 만큼 미스터리한 것은 아니며특히 함수를 사용하는 STL 알고리즘에서 유용한 서비스를 제공한다.  함수 포인터, 펑크터 그리고 람다 사용법 STL 알고리즘에 정보를 반영하는 세 가지 접근법을 사용한 예제를 살펴보자.우선 이 세가지..

안정된 인터페이스 만들기

클래스는 C++의 기본 추상화 단위다.클래스를 작성할 때추상화 원칙을 적용하여 인터페이스와 구현을 최대한 분리하는 것이 좋다.특히 데이터 멤버를 private로 지정하고게더와 세더를 제공하는 것이 바람직하다.인터페이스 클래스와 구현 클래스앞서 설명한 기준과 바람직한 설계 원칙을 적용하더라도C++언어와 추상화 원칙에 잘 맞지않는 부분이 있다.C++에서는 public 인터페이스와 private(또는 protected) 데이터 멤버 및 메서드를모두 클래스 정의에 작성하기 때문에클래스 내부 구현사항이 클라이언트에 어느 정도 노출될 수밖에 없다.그러므로 비 public 메서드나 데이터 멤버를 클래스에 추가할 때마다이 클래스를 사용하는 클라이언트 코드를 매번 다시 컴파일해야 하는 단점이 있다.프로젝트가 커질수록 이..

N-항 트리를 이용한 파일 시스템 구조

N-항 트리란 무엇인가? 이번 포스팅에서 살펴볼 N-항 트리(N-ary tree)는 각 노드가 N개의 자식을 가질 수 있다.N은 임의의 양수이므로 n개의 자식 노드는 벡터를 이용하여 저장할 수 있다.그러므로 N-항 트리는 다음과 같이 구현할 수 있다. struct nTree{ int data; std::vector children;}; 위 코드에서 각각의 노드는 임의 개수의 자식을 거느릴 수 있다.그러므로 전체 트리도 임의의 형태를 가지게 된다.평범한 이진 트리를 많이 사용하지 않는 것처럼 평범한 N-항 트리도 그다지 유용하지 않다.그러나 응용 프로그램의 요구 사항에 맞는 형태의 트리를 만들어 사용해야 한다. N항 트리의 예시와 컴퓨터 분야에서의 쓰임회사의 조직도와 같은 경우를 N-항 트리..

유니티 포톤서버를 이용한 채팅 시스템 구현완료 파티기능 제작 시작

https://github.com/kwon1232/HDProject GitHub - kwon1232/HDProjectContribute to kwon1232/HDProject development by creating an account on GitHub.github.com 중간에 떠있는 건 파티 시스템 구현 하기 위해 만들어둔 UI이다.오늘은 친구랑 저녁먹고 들어와서 10분정도 밖에 못만져서 아쉽다.내일은 시간 투자좀 해야겠다.

프로그래머스 LV.3 이중우선순위

GitHub :https://github.com/kwon1232/CodingTest/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/3/42628.%E2%80%85%EC%9D%B4%EC%A4%91%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%ED%81%90 CodingTest/프로그래머스/3/42628. 이중우선순위큐 at main · kwon1232/CodingTestThis is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - kwon1232/..

C++ 20 중첩 클래스

중첩 클래스클래스 정의에는 데이터 멤버와 멤버 함수 뿐만 아니라 중첩 클래스, 구조체, 타입 앨리어스(typedef), 열거 타입(enum)도 선언할 수 있다.클래스 안에서 선언한 모든 것은해당 클래스의 스코프로 제한된다.public으로 선언한 멤버를 클래스 외부에서 접근할 때는ClassName::과 같이 스코프 지정 연산자를 붙여야 한다.클래스 정의 안에서 다른 클래스를 정의할 수도 있다.예를 들어 SpreadsheetCell 클래스를Spreadsheet 클래스 안에서 접근할 수 있다.그러면 Spreadsheet 클래스의 일부분이 되기 때문에이름을 간단히 cell이라고 붙여도 된다.예를 들면 다음과 같다.export class Spreadsheet{ public : class Cell ..