728x90

2025/10 17

9주차 복습 과제

1. 객체(Object)와 멤버(Member)객체(Object):클래스(Class)를 기반으로 생성된 실제 메모리에 존재하는 인스턴스.클래스는 설계도, 객체는 그 설계도로 만들어진 실제 물건이다.class Person { public: int age; void speak() {} }; Person p1; // p1은 Person 클래스의 객체멤버(Member):클래스 내부에 선언된 변수(멤버 변수)와 함수(멤버 함수)를 말한다.class Person { public: int age; // 멤버 변수 void speak(); // 멤버 함수 };2. 생성자(Constructor)정의:객체가 생성될 때 자동으로 호출되는 특수한 멤버 함수.객체의 초기화를 담당한다.특징:클래스 이름과 동일하다.반환형이 없다(v..

7주차 복습 과제

private 이 기본적으로 생략이 되있어서 오류가 남. 추가로 struct는 public이 기본이다. 멤버 변수는 감추기/은닉하기 위해서 private에 기본으로 둔다. getter, setter 객체지향에서 중요한 문법이다. 객체지향에서 변수를 그냥 사용하는 것은 위험하기 때문에 공통된 자원인 자료형들은 private이나 protected (C++, java 등)에서 선언하고 public에 getter, setter로 함수를 따로 만들어서 사용하는 것이 좋습니다. 이 C++ 코드는 Dog라는 클래스를 정의하고, 객체를 생성해서 멤버 변수에 값을 설정하고 출력하는 예제입니다. 아래에 각 부분을 자세히 설명해드릴게요:🐶 클래스 정의: Dogclass Dog {private: int age; ..

7주차 중간고사 공지

중간고사(semi open book 시험, 다음 주 수업 시간) 안내1) 시험 시간 : 8주 차10월 23일(목), 14:00~14:50 Q&A, 15:00~16:50 시험2) 시험 범위 : 7주 강의에서 정리합니다.3) 시험 준비 방법 : A4 용지 2장(4페이지)에 자필로 작성한 컨닝 페이퍼(cheat sheet)를 시험 시 지참하여 참고하면 됩니다. 시험 시간에 cheat sheet는 볼 수 있지만 강의 자료와 기타 자료는 볼 수 없습니다.4) cheat sheet 주의사항 본인이 자필로 작성해야 하고, 복사본이나 워드 문서는 불가--------------시험 범위1주 차- C++00(C++OT).pdf 모두 제외- C++01(C++개요).pdf pp.22 C++ 탄생,..

데이터베이스 설계 완벽 가이드: 4단계로 알아보는 DB 설계 프로세스

데이터베이스 설계는 안정적이고 효율적인 시스템을 구축하기 위한 핵심 과정입니다. 체계적인 설계 없이 데이터베이스를 구축하면 데이터 중복, 성능 저하, 유지보수 어려움 등 다양한 문제가 발생할 수 있습니다. 이번 글에서는 데이터베이스 설계의 4단계를 순서대로 살펴보겠습니다.데이터베이스 설계가 중요한 이유본격적인 설계 단계를 알아보기 전에, 왜 체계적인 DB 설계가 필요한지 생각해볼까요? 잘 설계된 데이터베이스는 데이터 무결성을 보장하고, 시스템 성능을 최적화하며, 향후 확장성을 고려한 구조를 제공합니다. 또한 개발자들이 시스템을 이해하고 유지보수하기 쉽게 만들어줍니다.1단계: 요구사항 수집 및 분석모든 설계의 출발점은 요구사항을 정확히 파악하는 것입니다.무엇을 하는 단계인가요?이 단계에서는 실제 세계에서 ..

🧠 자바 면접 질문 정리 및 답변 예시

1. 자바의 특징질문: 자바의 주요 특징은 무엇인가요?답변 예시:객체지향 언어: 캡슐화, 상속, 다형성을 지원합니다.플랫폼 독립성: JVM 위에서 실행되어 OS에 종속되지 않습니다.메모리 관리 자동화: 가비지 컬렉션을 통해 메모리를 자동으로 관리합니다.멀티스레드 지원: Thread 클래스를 통해 손쉽게 멀티스레드를 구현할 수 있습니다.추가 Tip: “Write Once, Run Anywhere(WORA)” 개념을 강조하면 좋습니다.2. JVM, JRE, JDK의 차이질문: JVM, JRE, JDK의 차이는 무엇인가요?답변 예시:JVM (Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신입니다.JRE (Java Runtime Environment): JVM + 실행에 필요한 라이..

백엔드/Java 2025.10.12

동시성(Concurrency)과의 싸움: 자바 멀티스레딩의 이해와 동기화 기법

현대 소프트웨어에서 **멀티스레딩(Multithreading)**은 애플리케이션의 성능 향상과 응답성 개선을 위한 핵심 기술입니다. 특히 자바(Java)는 멀티스레딩 기능을 강력하게 지원하며, 다수의 작업을 동시에 처리하여 CPU 자원을 효율적으로 사용하게 해줍니다. 하지만 여러 스레드가 **공유 자원(Shared Resource)**에 동시에 접근할 때 발생하는 **동시성 문제(Concurrency Issue)**는 개발자에게 큰 도전 과제입니다. 이 글에서는 자바 멀티스레딩의 기본 개념을 이해하고, 이 '동시성과의 싸움'에서 승리하기 위한 필수적인 동기화 기법들을 살펴보겠습니다.1. 자바 멀티스레딩의 기본 이해멀티스레딩은 하나의 프로세스(Process) 내에서 여러 개의 **스레드(Thread)**가..

백엔드/Java 2025.10.11

☕️ 자바 개발자의 필수 지식: JVM의 작동 원리 깊이 이해하기 - 메모리 구조와 가비지 컬렉션(GC)

자바 개발자라면 누구나 한 번쯤 "JVM"과 "GC"라는 단어를 들어봤을 겁니다. 하지만 이 두 핵심 요소가 실제로 어떻게 작동하는지 정확히 이해하는 개발자는 많지 않죠. 자바 애플리케이션의 성능과 안정성을 결정짓는 핵심 기둥인 **JVM(Java Virtual Machine)**의 메모리 구조와 **가비지 컬렉션(Garbage Collection)**의 원리를 쉽고 깊이 있게 파헤쳐 봅시다!1. JVM, 자바의 든든한 실행 환경JVM은 자바 바이트코드를 운영체제에 독립적으로 실행시켜주는 가상 기계입니다. 자바가 "Write Once, Run Anywhere"를 실현할 수 있게 해주는 마법 같은 존재죠. JVM이 애플리케이션 실행을 위해 사용하는 메모리 공간을 **런타임 데이터 영역(Runtime Dat..

백엔드/Java 2025.10.09

🔥 자바 8 이후 필수 문법: 람다(Lambda)와 스트림(Stream) API 활용법

자바(Java)는 8버전에서 **람다 표현식(Lambda Expression)**과 **스트림 API(Stream API)**라는 혁신적인 기능을 도입하며 함수형 프로그래밍 스타일을 적극적으로 수용했습니다. 이 두 가지 핵심 요소는 기존의 장황하고 반복적인 코드를 간결하고 가독성 높은 코드로 변모시켰습니다. 자바 개발자라면 이 문법을 필수적으로 숙지해야 합니다.🚀 1. 람다(Lambda) 표현식: 간결한 익명 함수람다 표현식은 **익명 함수(Anonymous Function)**를 간결하게 표현하는 방식입니다. 주로 단 하나의 추상 메서드를 가진 **함수형 인터페이스(Functional Interface)**의 인스턴스를 만들 때 사용됩니다.📝 람다 기본 문법기본적인 형태는 (매개변수) -> { 실행..

백엔드/Java 2025.10.08
728x90