[JAVA] 객체 (+ 백준 10814)

이한솔·2023년 11월 29일
0

JAVA

목록 보기
6/9

객체

자바는 객체 지향 프로그래밍 언어로,자바에서 객체는 Class의 Instance를 의미한다. 자바에서는 클래스의 인스턴스(객체)를 생성하여 이를 활용하는 것이 중요한 개념 중 하나이며, 이로써 객체 지향 프로그래밍의 특성을 구현하게 된다.

클래스 (Class)

  • 클래스는 객체를 생성하기 위한 툴이나 설계도
  • 데이터 (속성, 필드)와 메서드 (동작, 함수)를 포함한다.
  • 예시
public class Person {
    // 속성
    String name;
    int age;

    // 메서드
    void eat() {
        System.out.println(name + " is eating.");
    }

    void walk() {
        System.out.println(name + " is walking.");
    }
}

객체 (Object)

  • 클래스를 기반으로 실제 메모리에 할당된 인스턴스
  • 객체는 클래스의 인스턴스화 과정을 통해 생성된다.
  • 예시
// Person 클래스를 기반으로 객체 생성
Person person1 = new Person();
Person person2 = new Person();

객체의 특징

  1. 속성 (Attributes)
    • 객체는 데이터를 가지고 있다. 이 데이터는 객체의 속성이라고도 한다.
  2. 메서드
    • 객체는 특정한 동작을 수행할 수 있는 메서드를 가지고 있다.
  3. 캡슐화
    • 관련된 데이터와 기능을 하나로 묶고 외부에서 접근을 제어하는 개념
    • 클래스는 캡슐화의 대표적인 예시이며 데이터를 private로 선언하고 메서드를 통해 접근하는 것이 캡슐화를 구현하는 한 방법이다.



문제

회원들의 목록이 주어졌을 때
  1. 나이 순 (나이의 오름차순) 으로 정렬 후
  2. 나이가 같을 경우 먼저 가입한 사람이 앞에 오는 순서로 정렬

백준 10814. 나이순 정렬

풀이

  • 테스트 수를 입력 받는다.
  • Member 라는 객체를 새로 생성하고, 해당 객체를 받는 리스트를 선언한다.
  • 입력 받은 테스트 수만큼 반복하면서 각각의 반복에서 나이와 이름을 입력받아 Member 객체를 생성하고 이를 리스트에 추가한다.
  • 리스트에 담긴 Member 객체들을 나이 기준으로 오름차순 정렬한다.
  • 정렬된 리스트를 순회하면서 나이와 이름을 출력한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    static class Member {
        int age;
        String name;

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

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine()); // 테스트 수

        List<Member> list = new ArrayList<>();

        for (int i = 0; i < N; i++) {
            String[] str = br.readLine().split(" ");
            int age = Integer.parseInt(str[0]);
            String name = str[1];

            list.add(new Member(age, name));
        }

        Collections.sort(list, (m1, m2) -> Integer.compare(m1.age, m2.age));

        StringBuilder sb = new StringBuilder();
        for (Member mem : list) {
            sb.append(mem.age).append(" ").append(mem.name).append("\n");
        }

        System.out.print(sb.toString());
    }
}
profile
개인 공부용

0개의 댓글