
전체 객체 : 다른 객체의 기능을 사용하는 객체
부분 객체 : 전체 객체에게 사용되는 객체
언제 사용?
일반적 이용 사례
대표 이용 예시
공개 API
외부에서 사용할 모든 기능에 대해 공용 메서드를 제공
ex) 로그인 시스템의 login() 메서드는 반드시 public
class User {
public String name;
public void login() {
System.out.println(name + " logged in.");
}
}
User user = new User();
user.name = "Alice";
user.login(); // "Alice logged in."
```
Getter/Setter
외부에서 객체의 속성을 간접적으로 변경 / 조회 가능
get 및 set 메서드를 public으로 설정
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
언제 사용?
일반적 이용 사례
데이터 보호 : 중요정보 수정을 못하도록 할때
=> 비밀번호, 계좌 정보...
메서드 숨김 : 외부에서 사용하지 않는 내부 로직 감출때
대표적 이용 예시
데이터 보호
은행 계좌의 잔액을 private으로 설정
=> 외부에서 직접 변경할 수 없도록
=> deposit() 같은 메서드로만 간접 접근 허용
class BankAccount {
private double balance; // 외부 접근 불가
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public double getBalance() {
return balance; // 안전한 방식으로 접근 가능
}
}
BankAccount account = new BankAccount();
account.deposit(500); // 가능
// account.balance = 1000;
// Error : private 변수에 직접 접근 불가
System.out.println(account.getBalance()); // 500
비밀번호 검증
비밀번호 검증 메서드 / 속성은 외부에 노출되지 않도록 private으로 설정
private String password;
private boolean validatePassword(String inputPassword) {
return this.password.equals(inputPassword);
}
protected
언제 사용?
자식 클래스에서 메서드 / 속성을 재사용 혹은 확장
=> 클래스 외부에서는 감춤
상위 클래스 정의 동작을 하위 클래스에서 변경 허용
=> 클래스 설계시 상속 구조를 고려해 사용
일반적 이용 사례
3줄 설명
Public : 외부에서 사용해야 하는 모든 메서드와 속성
Private : 외부에 숨겨야 하는 중요한 정보와 내부 구현
Protected : 상속 구조에서 자식 클래스에게만 공유하고 싶은 메서드나 속성

시스템 역할 / 주요 기능 간단히 정리
객체 찾기 => 명사 찾기 => er-diagram 속 entity
속성 정의 => 어떤 데이터? => 변수 => er-diagram 속 attribute
동작 정의 => 메서드 => 동사 => er-daigram 속 relationship
관계 설정하기
서로 어떤 관계를 가지지?
연관 관계
ex) 사용자 -> 여러개의 To-Do 보유 가능
집합 관계
독립적으로 존재 가능 but 포함됨
ex) Theme <- Sample To-Do 포함되어있음
합성 관계
집합과는 다르게 서로 의존적인 관계
ex) 집 - 방
상속 관계
한 클래스가 다른 클래스의 속성 ; 메서드 상속
ex) 사용자 -> 관리자 사용자의 특성을 상속받아 권한 추가
접근 제어자 설정
클래스 다이어그램 생성