본문 바로가기

엄마의 성장일기🌱

🌱 엄마의 코딩성장기록 Day 101 - [아두이노 프로젝트] 코드를 다시 세우다: VendingMachine 관리자 객체와 포인터 설계

오늘은 코드를 ‘다시 세운’ 날이었습니다.

어제와 똑같이 LED는 깜빡이고 LCD는 글자를 띄우지만, 그 이면의 코드는 전혀 다른 모양이 되었습니다.

단순히 돌아가는 코드를 넘어, '책임'을 나누고 '구조'를 잡는 일에 몰두한 밤이었습니다.

책임의 분리: 자판기(VendingMachine)와 제품(Product)

기존에 전역 변수로 흩어져 있던 제품 정보들을 VendingMachine이라는 관리자 클래스 안으로 모았습니다.

  • 의존성 주입: 제품은 외부에서 생성되고, 자판기는 그 **주소(Pointer)**를 전달받아 목록에 보관합니다.
  • 포인터 배열의 활용: Product* products[MAX_PRODUCTS] 배열을 통해 자판기는 제품의 실체를 복사하지 않고, 주소만으로 스마트하게 접근합니다.
  • Null Check의 안정성: 배열의 빈 공간을 건드리지 않도록 nullptr 체크 로직을 추가하며 코드의 단단함을 더했습니다.

보이는 것과 숨기는 것: 캡슐화(Encapsulation)의 고민

코드를 짜다 보니 public 선언을 줄이고 싶은 마음이 굴뚝같았습니다.

하지만 loop() 함수에서의 접근성 때문에 일단은 문을 열어 두었죠.

어디까지 드러내고 어디까지 숨길지(Information Hiding) 고민하는 과정은 즐거웠습니다.

지금은 열려 있지만, 구조가 더 정교해지면 언젠가 이 문도 우아하게 닫을 수 있을 것입니다.

마무리하며: 코드를 정리하는 것은 선을 고르는 일

버튼 제어까지 진도를 나가지 못한 아쉬움은 남지만, 엉킨 실타래 같던 구조를 시원하게 풀어냈다는 만족감이 더 큽니다.

코드를 정리하는 일은 눈에 보이지 않는 선을 고르는 일 같습니다.

어떤 선은 연결하고, 어떤 선은 과감히 끊어내고 말이죠.

늦은 시간, 조용한 집, LCD에 남은 작은 글자들을 뒤로하고 오늘 하루를 닫습니다.

저장하고, 덮고, 쉽니다.

내일의 코드는 오늘보다 조금 더 단단할 테니까요.

 

#아두이노 #C++공부 #객체지향프로그래밍 #클래스설계 #포인터배열 #자판기프로젝트 #임베디드개발 #코딩일기 #육아맘코딩 #개발자성장기