본문 바로가기
반응형

언어68

[C++] 인터페이스(Interface) 정리 인터페이스(Interface)C++의 인터페이스(Interface) 는 명확하게 문법적으로 존재하는 개념은 아니지만, 순수 가상 함수(pure virtual function) 를 사용"추상 클래스(Abstract Class)" 형태로 구현되고 이는 C++에서 객체지향 프로그래밍(OOP)을 구성하는 다형성(polymorphism) 의 핵심 요소 중 하나✅ 1. 인터페이스란?인터페이스(Interface) 는 기능의 "약속"만 정의하고 구현은 하지 않는 추상적인 형태의 클래스이것은 C++에서 다른 클래스들이 따라야 할 공통의 함수 규격(시그니처) 을 정의하고, 실제 로직은 상속받는 클래스에서 구현하게 함✅ 2. 인터페이스 구현 방법 (순수 가상 함수)C++에서는 인터페이스를 다음과 같이 순수 가상 함수만 가진.. 2025. 5. 31.
DI(Dependency Injection), DIP(Dependency Inversion Principle) C++에서의 DI(Dependency Injection)와 DIP(Dependency Inversion Principle)✅ DIP(의존성 역전 원칙, Dependency Inversion Principle)📌 정의상위 모듈(정책 결정)은 하위 모듈(세부 사항)에 의존하면 안 되며, 둘 다 추상(인터페이스)에 의존해야 한다.🎯 목적구체적인 구현이 아니라 추상화된 인터페이스에 의존하여 유연한 구조 유지코드 결합도 감소 → 변경에 강한 코드📎 C++ 예시// 상위 모듈은 추상 인터페이스에 의존class ICommunication {public: virtual void send(const std::string& msg) = 0; virtual ~ICommunication() = default;};//.. 2025. 5. 22.
c, c++ 임베디드 설계 비교 C (.c) vs C++ (.cpp) 기반 임베디드 설계 비교 정리요약항목C 기반 설계 (.c)C++ 기반 설계 (.cpp)주요 개념구조체 + 함수 분리클래스 (캡슐화, 상속, 다형성 등)상태/동작struct로 상태, function()으로 동작클래스 멤버 변수 + 멤버 함수로 통합모듈화파일 단위 (.c/.h) 모듈화객체 단위 (클래스) 모듈화의존성extern 또는 handle 방식참조(&) 또는 포인터 기반 의존성 주입싱글톤 처리전역변수 또는 getInstance() 직접 구현정적 멤버 or 싱글톤 패턴상속/다형성직접 구현 어렵고 불편명시적 지원 (virtual 등)코드 재사용성낮음 (구조체 확장 어려움)높음 (클래스 재사용 용이)초기화/생성자별도 init_XXX() 함수 필요생성자 자동 호출 가능컨텍.. 2025. 5. 21.
[c++] 로봇 시스템 상태 관리 및 로직 설계 c++에서 로봇 시스템 상태 관리 및 로직 설계 정리1. 시스템 구조의 계층화로봇을 소프트웨어로 제어할 때는 다음과 같이 3계층 구조로 나누는 것이 일반적Layer 1: 하드웨어 제어 (컨트롤러)MotorController, LedController, BuzzerControllerHAL 드라이버 기반으로 GPIO, PWM, UART 등을 직접 제어Layer 2: 역할 단위 매니저InputManager: 센서, 리모컨, 버튼 등 입력 수집OutputManager: 모터, LED, 부저 등 출력 실행LogicController: 입력에 따라 로직을 처리하고 행동을 결정Layer 3: 통합 객체 (예: Robot)Robot은 InputManager, OutputManager, LogicController를 통.. 2025. 5. 20.
[c++] 싱글톤 패턴 정리 C++ Singleton Pattern 정리🔷 개념Singleton은 애플리케이션 전체에서 하나의 인스턴스만 존재하도록 보장하는 디자인 패턴입니다.✅ 핵심 특징항목설명인스턴스 유일성정적 멤버로 하나의 인스턴스를 내부에 보관접근 제어정적 getInstance() 함수로만 인스턴스 접근 가능생성자 제한생성자는 private 또는 protected로 막음복사/이동 금지복사 생성자, 대입 연산자 삭제로 복제 차단🛠️ 기본 구현 예제🔹 Singleton.hpp#pragma onceclass Singleton {public: static Singleton& getInstance(); // 전역 인스턴스 접근 void doSomething(); // 예시 함수private: Singleton(); .. 2025. 5. 19.
마크다운 문법 정리 마크다운 문법 정리README.md와 같은 마크다운 파일 작성 시 필요한 문법 정리1. 헤더 (Header)1. 문서 구조를 나누기 위한 제목 스타일. #의 개수로 깊이 설정2. 1~6단계의 헤더를 지원# H1## H2### H3#### H4##### H5###### H6예시 출력H1H2H3H4H5H62. 목록 (List)✔ 순서 있는 목록1. 첫번째 1. 하위 항목 1. 하위의 하위 항목 1. 하위 항목-22. 두번째결과첫번째하위 항목하위의 하위 항목하위 항목-2두번째✔ 순서 없는 목록- 첫번째 - 하위 항목 - 하위의 하위 항목 - 하위 항목-2* 두번째결과첫번째하위 항목하위의 하위 항목하위 항목-2두번째3. 코드 블록 (Code Block)```jsconsole.log("H.. 2025. 4. 6.
Emoji 모음 EmojisCommit Message Convention, 문서 정리에 필요한 Emoji들 모음📜 커밋 이모지커밋 메시지 작성 시 참고하거나 문서 작성 시 섹션 구분용으로 활용하기 좋음🎯 기능 및 구조 관련이모지의미 (한글)🎉초기 커밋 – 프로젝트의 기본 구조 및 필수 파일을 세팅한 최초 커밋✨새로운 기능 추가 – 프로젝트에 새로운 기능 또는 기능 단위 코드 추가💥호환성 깨짐 (Breaking change) – 이전 버전과 호환되지 않는 변경 포함🚑긴급 수정 (Hotfix) – 즉시 처리되어야 하는 중요한 버그나 장애 수정🐛버그 수정 – 기존 코드의 버그 해결⚡️일반 업데이트 – 정리, 의존성 업데이트 등 전반적인 개선 사항🐎성능 개선 – 실행 속도, 리소스 최적화 등 성능 향상 작업♻️코드.. 2025. 4. 3.
[C++] #define, constexpr, PROGEM 비교 #define vs constexpr vs PROGEM#define, constexpr, 그리고 PROGMEM은 C++ 및 임베디드 프로그래밍에서 상수를 정의하고 메모리를 관리하는 데 사용되는 방법이다.이들은 각각 상수 정의, 컴파일 타임 평가, 메모리 최적화 측면에서 차이점이 있다.임베디드 환경에서의 어떤 상황에서 가장 적합한지 정리한다.비교 요약(표)특징#defineconstexprPROGEM타입 안전성낮음높음보통컴파일 타임컴파틸 타임 치환컴파일 타임 평가컴파일 타임 설정메모리 사용텍스트 치환 (작음)플래시/레지스터 (작음) 플래시 메모리 (RAM 절약)스코프관리없음 (전역적)있음 (지역적 가능)전역적읽기 속도빠름빠름느림 (플래시 읽기 필요)코드 복잡성낮음보통높음제한된 임베디드 환경에서의 추천1. 작.. 2024. 10. 27.
[C++] PROGEM PROGMEM이란?PROGMEM은 AVR 마이크로컨트롤러(예: Arduino)에서 RAM이 아닌 플래시 메모리에 상수 데이터를 저장하기 위해 사용되는 키워드이다.예시const uint8_t myArray[4] PROGMEM = {1, 2, 3, 4}; 장점1. RAM 절약- PROGMEM을 사용하면 상수 데이터를 플래시 메모리에 저장하므로, RAM 사용량을 크게 줄일 수 있다. - 이는 RAM이 제한적인 임베디드 환경에서 매우 유리하다. 2. 큰 데이터 구조 저장 가능 - 큰 배열이나 문자열과 같은 데이터 구조를 플래시 메모리에 저장할 수 있어, 메모리 자원을 효율적으로 사용할 수 있다.단점1. 읽기 복잡성 -  PROGMEM으로 저장된 값은 직접 읽을 수 없으며, pgm_read_* 함수를 사용해야 하.. 2024. 10. 26.
[C++] constexpr constexpr이란?constexpr은 C++11부터 도입된 키워드로, 컴파일 타임에 상수 값을 평가하여 정의할 수 있게 한다.예시constexpr TickType_t US_DELAY = 250; 장점1. 타입 안전성- constexpr은 타입이 있는 상수를 정의하므로, 컴파일 타임에 타입 검사를 할 수 있다.- 이는 코드의 안정성과 디버깅의 용이성을 높인다. 2. 컴파일 타임 평가 - 컴파일 타임에 값이 결정되므로, 최적화가 잘 이루어진다. - 상수 값은 실행 중 메모리를 차지하지 않고, 플래시 메모리나 레지스터에 직접 저장될 수 있다. 3. 스코프 관리 가능 - constexpr은 변수가 선언된 스코프 내에서만 유효하므로, 전역 변수와 지역 변수를 효과적으로 관리할 수 있다. 단점1. 복잡한 .. 2024. 10. 25.
반응형