2024/06 94

[C++] 상속이 필요한 이유(2)

상속이 필요한 이유(2)상속이 필요한 이유(1) 코드#include #include using namespace std;class Message { public: Message(int sendTime, string sendName) { this->sendTime = sendTime; // this->sendTime을 안쓰고 sendTime을 쓰면 매개변수 값을 매개변수에 넣는 꼴. this->sendName = sendName; } int GetSendTime() const { return sendTime; } string GetSendName() const { return sendName; } private: int sendTime; s..

[C++] 가상 함수(Virtual Function)와 동적 바인딩(Dynamic Binding)

가상 함수(Virtual Function)와 동적 바인딩(Dynamic Binding)동적 바인딩 : 부모 클래스가 자식 클래스를 가리키고 있으면, 자식 클래스에 오버라이딩된 메서드를 실행할 수 있도록 동적으로 바인딩을 해준다.참고)동적 --> 런타임에 결정정적 --> 컴파일 타임에 결정Example) RPG 게임에서 무기 구현#include using namespace std;class Weapon { public: Weapon(int power) : power(power) { cout 자식 생성자가 호출되기 전에 반드시 부모 생성자가 호출된다mySword.Use()의 경우 Sword::Use()가 호출된다myMagic.Use()의 경우 Magic::Use()가 호출된다우리가 게임..

[C++] 오버라이딩(Overriding)과 정적 바인딩(Static Binding)

오버라이딩(Overriding)과 정적 바인딩(Static Binding)override : 우선하다overload: 다중 정의overwrite : 덮어 쓰다Overriding#include using namespace std;class Base { public: int a = 10; // Base() : a(10) {}이랑 똑같음. void Print() { cout int a = 10;생성자가 호출될 때, 멤버 변수 a를 10으로 초기화 된다class Derived : public Base { public: int a = 20; void Print() { cout 멤버 변수의 이름이 같다면, 자기 고유멤버가 상속멤버보다 우선순위가 높다.d에서 멤..

[C++] 상속이 필요한 이유(1)

상속이 필요한 이유(1)상속이 필요한 이유에 대해서 알아보자example) 메신저 프로그램텍스트, 이미지 등의 포맷을 갖는 데이터를 전송한다상속을 사용하지 않고 코드를 작성해보자// 상속을 사용하지 않은 코드#include #include using namespace std;class Image { public: operator string() { return "사진"; }};class TextMessage { public: TextMessage(int sendTime, string sendName, string text) { this->sendTime = sendTime; // this->sendTime을 안쓰고 sendTime을 쓰면 매개변수 값을 매..

[C++] 상속(Inheritance)과 접근제어(Access Control)

상속과 접근제어상속(Inheritance)부모가 자식에게 상속하면, 부모의 멤버들을 전부 사용하고, 자식만의 고유한 멤버를 추가로 가질 수 있다포함관계 : 부모가 자식을 포함하는 관계남자 ) 총각 이듯이 부모 ) 자식이다.자식이 부모한테 포함되는거고, 부모의 멤버가 자식의 멤버에 포함되는 것이다.#include using namespace std;class Base { public: void bFunc() { cout 자식 클래스(파생 클래스) 뒤에 콜론 ":"을 붙인 뒤 접근제어자와 부모 클래스를 적어준 뒤 선언하면 된다class Derived : public Base { // Base를 부모로 하는 클래스 public: void dFunc() { cout ..

[C++] Implicit Conversion(묵시적 형변환)

Implicit Conversion(묵시적 형변환)묵시적 형변환과 명시적 형변환묵시적(암시적) 형변환: implicit conversion형변환을 겉으로 드러내지 않음명시적 형변환: explicit conversion형변환을 명시한다변환 생성자#include #include using namespace std;class Item { public: Item(int num) : num(num) { // 변환 생성자 cout 이동생성자를 통해 i3로 대입 // 묵시적 변환 Item i4 = (Item)4; // Item(int num) 생성자가 형 변환까지 하고 있음. // 명시적 변환전부 Item(int num) 생성자를 호출우리가 알고 있는 일반적인 일반적인 생성..

[C++] 이동 시맨틱(Move Semantics): 이동 생성자, 이동 대입 연산자

이동 시맨틱(Move Semantics): 이동 생성자, 이동 대입 연산자필독아래에서 주의해서 봐야할 내용이 있습니다. C++17부터 Guarenteed Copy Elision(보장된 복사 생략)이라는 개념이 들어오면서 단순히 함수의 리턴값을 대입하는 경우 임시 객체를 만드는 과정을 생략합니다. 아래 예시에서도 단순히 함수의 리턴 값을 대입하고 있는데, 이 글은 C++11을 기준으로 작성된 내용이므로 실제 컴파일러에서 코드를 돌리는 것과 동일하게 작동하지 않습니다. 이동 시맨틱에 대해서 배운다는 목적으로 아래 내용을 참조하면 되겠습니다.깊은 복사의 문제점을 해결하기 위해 얕은 복사를 사용객체를 복사할 때 하나 하나 많은 양의 값을 복사를 해야함.깊은 복사가 필요 없는 경우도 존재함// 고의적으로 얕은 복..

[DataBase] 10. Normalization(정규화)

Normalization(빅데이터 등장 이후 잘 안쓰긴 합니다. 그래도 RDB에서는 중요해요)좋은 relational design 생성instructor와 department를 in_dept으로 결합한다고 가정, 이는 instructor와 department 간의 natural join을 나타냄정보의 반복이 있음Null 값을 사용해야 함 (새로운 부서를 추가하는 경우, instructor가 없는 경우)Decompositionin_dep schema에서 정보 반복 문제를 피하는 유일한 방법은 이를 두 개의 schema - instructor와 department schema -로 분해하는 것임모든 Decomposition가 좋은 것은 아님. 예를 들어, employee(ID, name, street, ci..

DataBase 2024.06.26

[DataBase] 09. BigData and Distributed DataBase

Motivation매우 대량의 데이터 수집웹, 소셜 미디어, 최근에는 사물인터넷의 성장에 의해 주도됨웹 로그는 초기 데이터 소스였음웹 로그에 대한 분석은 광고, 웹 사이트 구조화, 사용자에게 표시할 게시물 등에 큰 가치를 가짐빅 데이터: 이전 세대 데이터베이스와 구별됨볼륨: 저장된 데이터의 양이 훨씬 큼속도: 삽입 속도가 훨씬 높음다양성: 관계형 데이터를 넘어 다양한 유형의 데이터 포함Querying Big Data매우 높은 scalability(확장성)이 필요한 트랜잭션 처리 시스템많은 애플리케이션이 매우 높은 확장성을 얻을 수 있다면 ACID 속성 및 기타 데이터베이스 기능을 기꺼이 포기함매우 높은 확장성과 비관계형 데이터를 지원해야 하는 쿼리 처리 시스템Big Data Storage Systems데..

DataBase 2024.06.26

[DataBase] 08. Transaction Recovery

TransactionTransaction은 여러 데이터 항목을 액세스하고 업데이트할 수 있는 프로그램 실행 단위(Unit)입니다.예: 계정 A에서 계정 B로 $50을 이체하는 Transaction:read(A)A := A - 50write(A)read(B)B := B + 50write(B)처리해야 할 두 가지 주요 문제:하드웨어 고장 및 시스템 충돌과 같은 다양한 종류의 failure(드뭄)여러 Transaction의 동시 실행(자주 발생)Example of Fund TransferAtomicity requirementTransaction이 3단계 후에 failure하고 6단계 전에 failure하면 돈이 "잃어버린" 상태가 되어 일관성이 없는 데이터베이스 상태가 됩니다.failure는 소프트웨어 또는 ..

DataBase 2024.06.26