Another Brain

4일차_ 클래스(class), 객체(object), 멤버변수, 메서드, 패키지(package), MVC Pattern 본문

P/JAVA

4일차_ 클래스(class), 객체(object), 멤버변수, 메서드, 패키지(package), MVC Pattern

뉸누나ㄴ나 2021. 5. 25. 00:01

--------------------------

-- 클래스(class)
-- 객체(object)
-- 인스턴스(instance)
-- 멤버변수
-- 메서드
-- new keyword
--------------------------

## UML(Unified Modeling Language)
>> 객체지향 분석 설계시에 사용하기 위한 표준 표기방법
>> Class Diagram

-- UML Tools
>> 상용화 : Rose, Together, StarUML 등
>> 오픈소스 : StarUML

-- 소스파일 구조 : package, import
-- 클래스파일 구조 :
>> 속성, 기능
>> 멤버변수, 생성자, 메서드

-- 변수
-- 데이터타입

## 객체(Object)
-- 개념 : 현실 세계에 존재하는 사물 또는 개념
>> 개발자관점 : 
>> 프로그램의 대상이 되는 모든것, 프로그램에서 관리해야하는 모든것
>> 관리를 하기 위해서 해당 객체의 정보가 영속성(저장)

-- 구성요소 = 속성 + 기능 
>> 속성 : 객체 상태정보
>> 기능 : 객체 행위(operation, behavior)

>> 개발자관점
>> 속성 : 멤버변수
>> 기능 : 메서드([매개변수1, 매개변수x]) : 반환타입


## 웹 어플리케이션 개발
-- 포털사이트 운영
>> 어떤 성격(서비스) 포털사이트 운영??

-- 객체 추출 : 고객, 게시판
>> 대상이 되는 모든것(관리 해야하는 모든것)

>> 고객 **
>> 게시판 **
>> 검색 : 기능


-- 객체 구성요소(속성) 속성 추출 : 고객
>> 어떤 성격(서비스) 포털사이트 운영??
>> 속성 추출 : 속성명, 타입, 변수명, 제약사항(constraint)
>> 제약사항(constraint) : 필수/선택, unique(중복불가), 글자수(최대, 최소), 형식 등

>> 고객 => class명 : Member
>> 아이디 : String, memberId, 식별키 = 필수 + 중복불가


## 객체 분석
>> 분석가 : Class Diagram 모델링
>> 개발자 : class 작성


## 학생의 성적 관리 프로그램
-- 학생성적 객체 : StudentScore
1. 학생번호(학번) : int => String, 식별키(필수, 중복불가), studentNo
2. 이름 : String, 필수, name
3. 성적 : int, 선택, score

-- UML 
>> 클래스 선언 형식 : ClassName
>> 멤버변수 선언 형식 : [access-modifier] 변수명:타입 [=명시적초기값]
>> 생성 선언 형식 : [access-modifier] 클래스명(매갭변수명:타입, 매개변수명:타입x) 
>> 메서드 선언 형식 : [access-modifier] 메서드명(매갭변수명:타입, 매개변수명:타입x) : 반환타입


## MVC Pattern 기반 package 
-- Model
>> 업무로직, 서비스
>> 데이터베이스 접근로직(Data Access Object : DAO Pattern)
>> 데이터를 가지고 이동하는 객체(Data Transfer Object : DTO pattern) / (Value Object : VO)

>> package com.work.model.service;
>> package com.work.model.dao;
>> package com.work.model.dto;

-- View
>> 프리젠테이션 로직 (보여주기위한 로직)
>> UI : CUI / GUI
>> CUI : main() 실행메서드 클래스

>> package com.work.view;

-- Controller
>> 요청 ~ 응답 제어

 

## 객체 생성 방법 및 객체의 구성요소(멤버변수, 메서드) 사용방법
-- 객체타입(참조형)
-- 클래스명은 객체타입이다!
-- 선언방법
 [modifiers] 클래스이름 참조변수명;
-- 생성방법:
 참조변수명 = new 클래스명();
 
-- 생성한 객체의 구성요소(멤버변수, 메서드) 사용방법
>> 참조변수명.멤버변수명 = 변경값;

>> 참조변수명.메서드명([parameters]);
>> 타입 변수명 = 참조변수명.메서드명([parameters]); 

## new 객체 생성 절차
1. 메모리 할당 : 멤버변수  
2. 기본값 자동 초기화
[3. 명시적 초기값 할당] -> optional
4. 생성자 수행
5. 참조값(reference value) 할당

## 메서드명
-- 객체가 해야하는 고유한 기능
--메서드명
--아규먼트(매개변수)
-- 반환타입 : 반환값 유무
    >> 없으면 void
    >> 존재하면 해당 반환타입 : return 반환갑;  (마지막 수행문)
-- 반환값 : 타입다름
    >> 단일속성
    >> 다중속성
    >> 여러개(집합) : 배열, collection API

 

## retutn 분기문

-- 메서드 내부에서 사용

-- 해당 메서드를 호출한 멤서드로 반환

-- return;

   >> 반환타입이 없는 void 필요시에 더이상 수행하지 않고 호출 측 메서드로 반환

   >> 선택

 

-- return 값;

   >> 메서드에 반환타입이 있으면 반드시 마지막 수행문에

   >> 필수 

 

## 자동형변환(오토박싱)
작은타입은 큰타입으로 자동형변환

-- 적용 : 변수, 매개변수, 반환타입
-- 기본형 : byte => short, char => int => long => float => double

-- 참조형 : 자식 클래스 (sub-class) => 부모 클래스 (super class)

## overloading 중복정의 : 메서드명
-- 메서드이름 동일
-- 아규먼트(매개변수) 다름 : 갯수, 타입, 순서

 

## [DTO 객체의] 속성정보를 변경하는 메서드

-- setter()

-- 예시 : 성적(score) 변경 메서드

 public void setScore(int modifyScore) {
 	score = modifyScore;
 }

 

## [DTO 객체의] 속성정보를 조회하는 메서드

-- getter()

-- 예시 : 성적(score) 조회 메서드

 public int getScore() {
 	return score;
 }
Comments