전체 글
-
OOP DesigDSP/Lecture 2024. 6. 14. 06:31
애플리케이션 도메인과 솔루션 도메인애플리케이션 도메인(Application Domain):애플리케이션 도메인은 현실 세계의 구체적인 엔티티들을 포함합니다.이 도메인에서는 우리가 모델링하고자 하는 실체(entity)들이 존재합니다.솔루션 도메인(Solution Domain):솔루션 도메인은 애플리케이션 도메인의 엔티티들을 소프트웨어에서 객체로 표현하는 영역입니다.이 도메인에서는 실체들을 객체로 표현하고, 객체지향 프로그래밍을 통해 구현합니다.타입과 클래스의 추상화 과정타입 분류:현실 세계의 실체들을 타입으로 분류합니다. 이 과정은 추상화(abstraction) 과정으로, 실체의 모든 세부 사항을 포함하지 않고, 모델링하고자 하는 중요한 속성만을 포함합니다.예를 들어, "자동차"라는 타입은 다양한 자동차의 ..
-
Lecture3 FRIENDSDSP/Lecture 2024. 5. 23. 12:32
Friends (친구 함수 및 클래스)C++에서 friend 키워드는 특정 클래스의 비공개(private) 또는 보호된(protected) 멤버에 접근할 수 있는 함수를 선언하는 데 사용됩니다. 이러한 친구 함수나 클래스는 그 클래스의 멤버가 아니지만, 해당 클래스의 비공개 멤버에 접근할 수 있습니다.주요 개념친구 함수:친구 함수는 클래스의 비공개 멤버에 접근할 수 있습니다.이러한 함수는 클래스 내부에서 선언되지만 클래스 외부에 정의됩니다.class MyClass {private: int secret;public: MyClass() : secret(0) {} friend void revealSecret(MyClass& obj);};void revealSecret(MyClass& obj) ..
-
Lecture3 Vector Input Operator <<DSP/Lecture 2024. 5. 23. 12:31
Vector2D 출력 연산자 이 연산자는 벡터를 출력 스트림에 형식화된 텍스트로 변환하는 역할을 합니다. 아래는 해당 연산자의 코드입니다:위의 코드는 다음과 같은 기능을 수행합니다:std::ostream& operator출력 연산자를 정의하여 Vector2D 객체를 출력할 때 사용할 수 있도록 합니다.aOStream은 출력 스트림을 참조합니다. 예를 들어, std::cout을 참조할 수 있습니다.aVector는 출력할 Vector2D 객체를 가리킵니다.aOStream aVector의 fX와 fY 값을 각각 반올림한 후, 대괄호로 묶어서 출력 스트림에 전달합니다.예를 들어, aVector.fX가 1.2이고 aVector.fY가 3.4인 경우, 출력 결과는 [1,3]이 됩니다.return aOStream:출..
-
Lecture3 Vector2D 입력 연산자 >>DSP/Lecture 2024. 5. 23. 12:25
Vector2D 입력 연산자 >>이 연산자는 벡터 좌표의 형식화된 입력을 수행합니다. 즉, 입력 스트림에서 두 개의 부동 소수점 값을 가져오려고 시도합니다. 만약 입력이 실패하면, 좌표 값은 0.0으로 설정됩니다. 마지막으로, 입력 연산자는 스트림 객체를 반환하여 입력 작업을 연속적으로 수행할 수 있도록 합니다. 이 코드는 무엇을 하나요?std::istream& operator>>는 입력 연산자를 정의합니다. 쉽게 말하면, 이 코드는 ">>" 기호를 사용해서 벡터에 값을 넣는 방법을 알려줍니다.aIStream은 입력 스트림입니다. 예를 들어, 키보드에서 입력받는 것이라고 생각하면 됩니다.aVector는 우리가 값을 저장할 벡터 객체입니다.aIStream >> aVector.fX >> aVector.fY는..
-
Lecture 2 - 정적 캐스트(static_cast)DSP/Lecture 2024. 4. 25. 13:24
타입 변환(Type Conversion): 정적 캐스트(static_cast)를 사용하여 특정 상수를 float 타입으로 명시적으로 변환하는 방법을 설명합니다. 이는 컴파일러가 원하는 타입으로 상수를 해석할 수 있게 하여, 환경에 적합한 내용을 만듭니다. 이러한 변환을 사용하지 않으면 컴파일러 오류나 경고가 발생할 수 있습니다.스칼라 곱셈 연산자(Scalar Multiplication Operator): 벡터와 스칼라 값을 곱하는 연산을 수행하는 연산자입니다. C++에서는 이를 'ad hoc operator'라고 부르며, 벡터 클래스의 멤버 함수가 아니라 독립적인 함수로 구현됩니다.Vector2D operator*(const float aScalar, const Vector2D& aVector) noex..
-
Lecture 2 - Operator, Overloading and VectorDSP/Lecture 2024. 4. 25. 13:00
연산자 오버로딩에 대한 설명연산자 오버로딩은 프로그래머가 정의한 연산자(예를 들어 +, -, *, / 등)에 대한 사용자 정의 구현을 가능하게 합니다. 이 기능을 통해 클래스와 같은 사용자 정의 타입에 대해서도 이 연산자들을 직관적이고 자연스럽게 사용할 수 있습니다. "overloaded operators are like normal functions, but are defined using a pre-defined operator symbol" 연산자가 일반함수처럼 동작한다는 것 프로그래밍에서 함수는 특정 작업을 수행하거나 값을 계산하는 데 사용됩니다. 예를 들어, 두 숫자를 더하는 함수를 생각해 볼 수 있어요. 연산자 오버로딩을 사용하면, 우리는 +나 - 같은 기호를 사용하여, 마치 함수처럼 이 연산..
-
Lecture 2 - Header file, ConstructorDSP/Lecture 2024. 4. 25. 12:16
헤더 파일 포함:벡터 연산을 구현하기 위해, 우리는 소스 파일의 최상단에 "Vector2D.h" 헤더 파일을 포함시킵니다. 이때 사용된 이중 인용 부호는 현재 프로젝트 내에 정의된 헤더 파일을 포함한다는 의미입니다.수학 라이브러리 포함:벡터 연산은 수학 연산을 필요로 하므로 라이브러리를 포함합니다. 여기서 사용된 꺾쇠 괄호는 표준 라이브러리의 수학 추상화를 포함하고자 함을 나타냅니다. 또한, PI와 같은 사전 정의된 변수를 사용하고자 할 때는, 모든 것을 포함하기 전에 상단에 매크로 정의를 사용해야 합니다.헤더 파일의 중복 포함 방지:각 헤더 파일은 #pragma once 지시어로 시작해야 합니다. 이는 헤더 파일이 여러 번 포함되는 것을 방지하기 위함입니다.메서드 구현:소스 파일에서는 실제로 클래스의..
-
Lecture 2 - noexcept, const and reference (L-value,R-value)DSP/Lecture 2024. 4. 23. 11:42
noexcept 키워드 noexcept는 C++11에서 도입된 키워드로, 함수가 예외를 발생시키지 않음을 명시하는 데 사용됩니다. 예외를 발생시키지 않는 함수는 프로그램의 성능을 향상시킬 수 있으며, 더 안정적인 코드를 작성하는 데 도움을 줍니다. noexcept의 중요성 성능 최적화: 예외 처리는 실행 시간과 자원을 소모할 수 있습니다. noexcept를 사용함으로써 컴파일러는 예외 처리 로직을 생략할 수 있어, 함수 호출이 더 효율적으로 이루어질 수 있습니다. 예외 안전성 보장: noexcept가 명시된 함수에서 예외가 발생하면, 프로그램은 즉시 종료됩니다(std::terminate가 호출됨). 이는 개발자가 예외 안전성을 강제하고, 예외가 발생하지 않도록 보다 주의 깊게 코드를 작성하게 만듭니다. ..