Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

우주코딩

클래스 문법 활용하기, 패키지 만들기 본문

Project

클래스 문법 활용하기, 패키지 만들기

우주코딩 2021. 7. 16. 17:48

클래스 문법의 용도

  1. 서로 관련된 일을 하는 메서드들을 관리하기 쉽게 한 클래스에 모아두는 것 => 역할에 따라 메서드 분류
  2. 복합 데이터를 저장하는 메모리를 설계 => 사용자 정의 데이터타입 만들 때 (user-defined data type)

클래스 문법을 이용하여 메서드를 분류하기

관리하기 쉽게하기 위해 분류

04-a
promptString
promptInt
promptDate
를 Prompt 클래스로 묶기

메서드의 이름을 inputString
inputInt
inputDate로 바꾼다.

addTask()
listTasks()

TaskHandler 클래스로 묶는다.

addProject()
listProjects()

ProjectHandler

addMember()
listMembers()

MemberHandler 클래스로 묶는다.

다른 클래스의 명령을 실행하는 문법

클래스명.메서드명();

클래스 문법을 사용하여 복합구조의 변수 설계

반찬 그릇을 합쳐서 하나의 식판에 담는다.

04-b
낱개의 변수로 여러 사람의 정보를 다룰 때

int[] no;
String[] name;
String[] email
String[] password;
String[] photo;

회원 정보를 관리하기 쉽게 한 묶음으로 묶기
- 여러 개의 변수로 구성된 새로운 구조의 복합 데이터타입을 정의
"사용자 정의 데이터 타입"

class Member{
    int no;
    String name;
    String email;
    String password;
    String photo;
}

Member 인스턴스 만들기

new = 클래스 설계도에 따라 Heap 영역에 변수를 만들라는 명령.
Member(); = 클래스명
Member = 클래스명(변수의 데이터 타입)
member = Member 인스턴스의 주소를 저장하는 변수 (Member의 reference)

Member member =new Member();

Member설계도(클래스)에 따라 만든 변수들 = Member 의 인스턴스(instance)

인스턴스 변수에 값저장

member.no = 100;

member = 인스턴스의 주소를 담는 레퍼런스
no = 인스턴스의 변수
100 = no 인스턴스의 값.

dangling Object = garbage

메서드 호출이 끝난 후 메서드가 사용한 로컬변수의 주소를 잃어버려 쓸 수 없는 메모리
주소를 알아낼 수 있는 방법은 없다

메서드 호출이 끝나도 주소값을 잃어버리지 않게끔 static class변수에 저장한다.

static 변수는 Method Area 영역에 생성된다.

레퍼런스와 레퍼런스 배열, 레퍼런스 배열을 가리키는 배열 레퍼런스

변수를 낱개가 아닌 배열로 지정

static Member[] members = new Member[100];

Member 인스턴스의 주소를 저장할 레퍼런스를 100개 생성한다.
members = Member 레퍼런스 '배열'의 주소

static final int MAX_LENGTH = 100;

static Member[] members = new Member[MAX_LENGTH];
static int size = 0;

패키지 적용

클래스를 역할이나 용도에 따라 관리하기 쉽게 분류하는 문법
패키지는 실제 폴더를 가리킨다.
04-c

com.eomcs
ㄴpms -프로젝트 패키지
ㄴ domain (= vo = dto) - 업무 데이터를 저장하는 사용자 정의 데이터 타입을 두는 패키지
ㄴ handler - 업무를 처리하는 클래스를 두는 패키지
ㄴutil - 여러 프로젝트에 재사용 할 수 있는 기능을 수행하는 클래스를 두는 패키지

메서드의 접근 범위를 설정하지 않으면
기본 접근 범위는 같은 패키지 및 하위 클래스만이 접근할 수 있다.
다른 패키지에서도 접근할 수 있도록 하려면 public으로 공개해야한다.

  1. util 폴더에 Prompt 클래스를 두고 메서드에 public 처리한다.
  2. domain 패키지 생성 후 Member, Project, Task 클래스를 옮긴다.
    클래스에 정의되어 있는 변수를 다른 패키지에서 접근할 수 있도록 public으로 공개한다.
    domain 객체 -> 업무에서 다루는 데이터를 표현하는 클래스
    사용자 정의 데이터 타입을 의미한다.
    값을 표현한다는 의미로 'Value Object' (VO) 라고도 부른다.
    데이터를 실어나르는 그릇 역할을 한다는 의미의 'Data Transfer Object' (DTO) 라고도 부른다.
  3. Handler 클래스를 별도의 패키지로 분류한다.
Comments