클래스 · 객체 · 메서드

최병현·2025년 12월 9일

java

목록 보기
6/38
post-thumbnail

1. 오늘 배운 핵심 개념

1) 클래스(Class) — 설계도 만들기

class Person {
    String name;
    int age;
}

클래스는 형태만 정의되어 있고 실제 데이터는 없음.

2) 객체(Object, Instance) — 실제 데이터가 있는 실체

Person p = new Person("홍길동", 20);
  • p는 Person 객체 하나를 가리킴
  • 객체마다 서로 다른 데이터를 가짐

3) 생성자(Constructor)

객체가 만들어질 때 자동 실행되어 값 초기화를 담당.

Person(String name, int age) {
    this.name = name;
    this.age = age;
}

4) 인스턴스 변수 vs static 변수

인스턴스 변수 → 객체마다 값이 다름

static 변수 → 모든 객체가 공유하는 하나의 값

static int count = 0;
System.out.println(Person.count);

5) 메서드(Method) — 객체의 기능

void printInfo() {
    System.out.println("이름: " + name + ", 나이: " + age);
}
p.printInfo();

6) 객체 배열 — 여러 객체 관리

Person[] arr = new Person[3];
arr[i] = new Person(name, age);

7) ScoreManager — 관리 클래스 역할

  • 학생 추가 addStudent()
  • 전체 출력 printAll()
  • 최고 점수 찾기 findTopStudent()
  • 평균 점수 계산 getAverage()

OOP의 핵심은 역할 분리와 구조화.

8) 최고 점수 찾기 알고리즘

int maxScore = -1;
int maxIndex = 0;

for (int i = 0; i < index; i++) {
if (students[i].score > maxScore) {
maxScore = students[i].score;
maxIndex = i;
}
}
return students[maxIndex];

9) 평균 점수 계산 & 소수 자리 조절

double avg = manager.getAverage();
System.out.printf("평균 점수: %.2f", avg);

2. 오늘 실습 1 — 객체/클래스 구조 연습

Person, Student 등의 클래스를 직접 만들고, 생성자·메서드를 정의하고, new 로 객체를 생성하여 배열에 저장하고 출력하는 연습을 진행함.


3. 오늘 실습 2 — ScoreManager 구현

학생 여러 명을 객체 배열로 저장하고,

  • 전체 출력
  • 최고 점수 찾기
  • 평균 점수 계산

등의 기능을 OOP 방식으로 구현해봄.


4. 어려웠던 점

  • 클래스, 객체, 생성자 개념이 한꺼번에 나와 헷갈림
  • static vs 인스턴스 변수 구분이 어려움
  • 객체 배열 구조(arr[i] = new …)가 복잡하게 느껴짐
  • 최고 점수 찾기 알고리즘에서 흐름 이해가 어려움

5. 해결 & 깨달음

  • 클래스 = 설계도, 객체 = 실제 물건이라는 비유로 개념이 정리됨
  • static = “공유 저장소”, 인스턴스 = “개별 저장소”라는 이미지로 이해됨
  • 객체 배열은 “Person 칸 3개짜리 서랍”처럼 생각하면 쉬워짐
  • 최고 점수 로직은 “첫 사람을 1등으로 가정 후 비교” 흐름으로 이해됨

6. 내일 목표

  • 클래스/객체/생성자 완전 복습
  • static vs 인스턴스 변수 연습
  • 객체 배열 직접 다시 만들어보기
  • 최고 점수/평균 점수 로직 직접 타이핑 연습

7. 느낀 점

오늘은 “클래스 설계 → 객체 생성 → 배열로 관리 → 최고·평균 계산”까지 객체지향의 흐름을 처음으로 완성한 하루였다. 아직 낯선 개념이 많지만, 절차형 사고에서 구조적(OOP) 사고로 넘어가는 중요한 전환점이었다.

profile
Develop

0개의 댓글