1. 오늘 한 것
① 로봇 산업 동향 파악 및 취업 전략
- 휴머노이드 로봇 (미래 유망 기술): OS로 안드로이드, 임베디드 리눅스를 주로 사용. (기업: Boston Dynamics, 레인보우 로보틱스, 로보티즈). ROS2와 Android 연동 기술이 핵심.
- 산업용 로봇: 기계/전자/AI 융합. 주로 펌웨어(Firmware) 제어. 현대로보틱스 등 크고 무거운 장비 위주라 석·박사 인력이 주류를 이룸.
- 협동 로봇 (신기술): 휴머노이드와 산업용 로봇의 중간 형태. 펌웨어 제어가 핵심.
② Java 기초: 클래스(Class)의 기본 구조 학습
객체 지향 프로그래밍의 뼈대인 클래스가 3가지 핵심 요소(멤버 변수, 생성자, 멤버 함수)로 구성됨을 확인하고, 실행을 위한 main 함수 구조를 실습함.
public class MyClass {
// 1. 멤버 변수 (상태)
private int num; // 기본적으로 멤버 변수는 은닉(private)
// 2. 디폴트 생성자 (초기화)
public MyClass(){
this.num = 10;
}
// 3. 멤버 함수 (동작)
void printNum(){
System.out.println(num);
}
/* Main 함수 (실행 진입점) */
public static void main(String[] args) {
MyClass mc = new MyClass(); // 메모리에 객체 생성
mc.printNum();
}
}
③ Java 한정자(Modifier) 개념 정리
- 접근 한정자 (가시성 제어):
- public: 어디서든 접근 가능.
- protected: 같은 패키지 + 타 패키지의 상속받은 자식 클래스에서 접근 가능.
- default: 같은 패키지 내에서만 접근 가능 (키워드 생략 시 기본값).
- private: 오직 해당 클래스 내부에서만 접근 가능 (상속이 필요할 경우 protected로 변경해야 함).
- 일반 한정자:
- static: 객체 생성 없이 클래스 로드 시 메모리에 바로 올라감.
- final: 적용 위치에 따라 의미가 변함.
- 변수에 붙으면: 상수(값 변경 불가)
- 클래스에 붙으면: 상속 불가
- 메서드에 붙으면: 오버라이딩(재정의) 불가
2. 문제 / 헷갈린 점
① public과 default의 차이점
- 상황: 둘 다 접근을 허용하는 느낌이라 정확한 차이점이 헷갈림.
- 해결: 패키지(Package) 개념을 기준으로 나뉨을 이해함. default는 같은 폴더(패키지) 안에서만 공유할 때 쓰고, public은 외부 라이브러리나 아예 다른 폴더에서도 끌어다 쓸 수 있게 완전히 개방할 때 사용함.
② final 키워드의 가변적 의미
- 상황: C언어의 const와 같은 상수 개념으로만 알고 있었음.
- 해결: Java에서는 선언되는 위치(변수, 클래스, 메서드)에 따라 각각 '값 변경 방지', '상속 방지', '오버라이딩 방지'라는 객체지향적 제어 장치로 쓰인다는 것을 구조적으로 암기함.
3. 오늘 배운 핵심
- 진로 꿀팁: 로봇 개발자로 성장하고싶다면 포화 상태인 산업용 펌웨어보다, 안드로이드와 ROS2를 활용하는 휴머노이드 및 협동 로봇 분야를 타겟팅해야 한다.
- 클래스의 3요소: Java의 클래스는 '멤버 변수(데이터) + 생성자(초기화) + 멤버 함수(기능)'로 구성되며, 이 설계도를 기반으로 new 연산자를 통해 객체를 생성해야만 main에서 동작시킬 수 있다.
- 캡슐화와 접근 제어: 멤버 변수는 기본적으로 private으로 닫아두고, 외부에서 상속이 필요할 때만 protected를 여는 방어적인 설계 습관을 들여야 한다.
4. 다음 목표
- 2일간 예정된 Java 압축 학습 일정에 맞춰 상속(Inheritance), 다형성(Polymorphism), 인터페이스(Interface) 등 안드로이드 개발에 필수적인 객체지향 핵심 문법 마스터하기.
- Android Studio 개발 환경 세팅 및 에뮬레이터 구동 확인.
- C언어 프로젝트에서 다뤘던 소켓 통신 개념을 Java 환경에서는 어떻게 구현하는지 차이점 비교해 보기.
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 안드로이드 앱 개발 기초 ] XML 레이아웃 설계, UI 동적 제어 및 액티비티 생명주기 (33일차 기록) (1) | 2026.04.09 |
|---|---|
| [ JAVA 기초 ] 자바 스레드 구현 (32일차 기록) (0) | 2026.04.09 |
| [ C언어 IoT 프로젝트 ] #6 스마트홈 최종 발표 준비 및 회고 (30일차 기록) (0) | 2026.03.27 |
| [ C언어 IoT 프로젝트 ] #5 Win32 API 대시보드 구현 및 최종 기능 점검 (29일차 기록) (0) | 2026.03.24 |
| [ C언어 IoT 프로젝트 ] #4 인코딩 에러수정, WinAPI 비동기 UI 개발 (28일차 기록) (0) | 2026.03.24 |