프로그래밍
-
[C++] SOLID 법칙프로그래밍/C & C++ 2024. 10. 7. 06:05
SOLID는 객체지향 프로그래밍(OOP)에서 유지보수성, 확장성, 재사용성을 높이기 위한 다섯 가지 설계 원칙을 뜻합니다. 각 원칙은 소프트웨어를 더 유연하고 변경에 강하게 만들어 줍니다. SOLID는 다음 다섯 가지 원칙의 약자입니다.1. 단일 책임 원칙 (SRP, Single Responsibility Principle)클래스는 단 하나의 책임만 가져야 하며, 오직 하나의 이유로만 변경되어야 한다는 원칙입니다. 즉, 하나의 클래스는 하나의 기능만을 담당해야 하고, 그 기능과 관련된 변경사항이 있을 때만 수정되어야 합니다.예시:클래스 Report가 데이터를 처리하고, 화면에 출력까지 한다면, 이는 두 가지 책임을 가진 것입니다. 데이터를 처리하는 역할과 화면 출력하는 역할을 나누는 것이 SRP를 따르는..
-
[C++] 객체지향 프로그래밍(OOP, Object-Oriented Programming)프로그래밍/C & C++ 2024. 10. 7. 00:18
객체지향 프로그래밍(OOP, Object-Oriented Programming)은 프로그램을 여러 객체로 구성하여, 이 객체들이 서로 상호작용하면서 프로그램이 동작하도록 설계하는 프로그래밍 패러다임입니다. 객체지향의 핵심 개념은 객체와 클래스이며, 이를 통해 코드의 재사용성과 확장성을 높이고, 유지보수를 용이하게 할 수 있습니다.객체지향의 주요 특징클래스와 객체클래스(Class): 객체를 생성하기 위한 청사진 또는 설계도입니다. 속성(변수)과 메서드(함수)를 정의합니다.객체(Object): 클래스를 기반으로 생성된 실체로, 클래스에 정의된 속성과 메서드를 실제로 사용할 수 있습니다.캡슐화(Encapsulation)데이터를 보호하고 외부에서 직접 접근하지 못하도록 제한합니다. 이를 통해 객체의 내부 상태를..
-
[C++] Forward Declaration(전방 선언)프로그래밍/C & C++ 2024. 7. 28. 06:05
Forward Declaration(전방 선언)은 C++에서 중요한 개념으로, 클래스나 함수의 전체 정의를 제공하지 않고, 그 존재를 컴파일러에 알려주는 것입니다. 전방 선언을 사용하면 컴파일 시간과 의존성을 줄일 수 있습니다.Forward Declaration의 필요성컴파일 시간 단축: 헤더 파일에 불필요한 포함을 줄여서 컴파일 시간을 줄일 수 있습니다.순환 의존성 해결: 두 클래스가 서로를 참조할 때 순환 의존성 문제를 해결할 수 있습니다.캡슐화 개선: 클래스 정의를 감추고, 의존성을 최소화하여 더 좋은 캡슐화를 제공합니다.Forward Declaration의 사용 예시클래스 전방 선언클래스 A와 클래스 B가 서로를 참조해야 하는 경우를 생각해 봅시다. 전방 선언을 사용하여 순환 의존성을 해결할 수 ..
-
[Unreal] 엔진에서 제공하는 Movement Component프로그래밍/Unreal 2024. 7. 27. 06:05
언리얼 엔진에서 제공하는 Movement Component(이동 컴포넌트)는 다양한 게임플레이 상황에서 캐릭터나 오브젝트의 움직임을 관리하고 제어하는 데 사용됩니다. 주요 Movement Component들을 하나씩 설명드리겠습니다.1. UCharacterMovementComponentUCharacterMovementComponent는 주로 캐릭터의 이동을 제어하는 데 사용됩니다. 이 컴포넌트는 다양한 이동 모드(걷기, 뛰기, 수영 등)를 지원하며, 충돌 처리와 네트워크 동기화 기능을 포함합니다.주요 기능Walking: 캐릭터가 지면을 따라 이동합니다.Falling: 캐릭터가 중력에 의해 떨어집니다.Swimming: 캐릭터가 물 속에서 이동합니다.Flying: 캐릭터가 공중에서 자유롭게 이동합니다.예시U..
-
[Unreal] UCLASS와 UPROPERTY 매크로프로그래밍/Unreal 2024. 7. 26. 19:05
언리얼 엔진에서 UCLASS()와 UPROPERTY() 매크로는 언리얼 오브젝트 시스템의 핵심적인 요소입니다. 이들 매크로는 언리얼 엔진의 리플렉션 시스템을 통해 클래스와 클래스 멤버를 관리하고, 블루프린트, 시리얼라이제이션, 에디터 기능 등을 사용할 수 있도록 합니다.UCLASS()UCLASS() 매크로는 클래스 선언 앞에 사용되어, 해당 클래스가 언리얼 오브젝트 시스템에 의해 관리될 것을 나타냅니다. UCLASS() 매크로를 사용하면, 클래스가 다양한 엔진 기능을 활용할 수 있습니다. 예를 들어, 블루프린트에서 사용할 수 있게 되거나, 특정 속성을 가진 메타 데이터를 지정할 수 있습니다.예시UCLASS()class MYPROJECT_API AMyActor : public AActor{ GENER..
-
[C++] const와 constexpr 차이프로그래밍/C & C++ 2024. 7. 23. 06:05
const와 constexpr는 둘 다 상수를 정의하는 데 사용되지만, 서로 다른 방식으로 작동하고, 다양한 용도로 사용됩니다. 다음은 const와 constexpr의 차이점에 대한 설명입니다.const (Constant)const 키워드는 변수의 값을 변경할 수 없음을 나타냅니다.컴파일 타임 또는 런타임에 초기화될 수 있습니다.초기화된 후 값을 변경할 수 없습니다.일반적으로 런타임 상수를 나타낼 때 사용됩니다.예시:const int x = 10; // x는 변경할 수 없는 상수int y = 20;const int* ptr = &y; // ptr은 y를 가리키는 상수 포인터, 하지만 y의 값은 변경 가능// Error: x is const// x = 20;constexpr (Constant Express..
-
[C++] History (C++11~20)프로그래밍/C & C++ 2024. 7. 15. 06:05
C++11에서 C++20까지의 주요 변경사항 및 추가된 기능을 정리해 드리겠습니다. 각 버전마다 많은 개선과 새로운 기능이 도입되었습니다.C++11 (2011)오토 타입 추론: auto 키워드를 사용하여 변수의 타입을 자동으로 추론.R-value 참조 및 이동 의미론: T&&를 사용하여 R-value 참조를 지원하고 이동 생성자와 이동 대입 연산자를 구현.스마트 포인터: std::unique_ptr과 std::shared_ptr를 도입하여 메모리 관리 간소화.람다 표현식: 익명 함수와 캡처 리스트를 지원하는 람다 함수.범위 기반 for 루프: 컬렉션이나 배열을 간단하게 순회하는 for 루프.static_assert: 컴파일 타임에서 조건을 검사하는 정적 어설션.nullptr: 기존의 NULL 대신 사용되..