TIL 04. 클래스1

crystal·2021년 6월 1일
0

Java

목록 보기
4/6
post-thumbnail

-- 객체(object) : 프로그램 대상이 되는 모든것
-- 클래스(class) : 객체에 대한 청사진(blue print / template) => 붕어빵틀
-- 인스턴스(instance) : new 실제 메모리에 생성된 object(instance) => 생성된 붕어빵1 붕어빵2 붕어빵x

-- 멤버변수
-- 메서드
-- 생성자
-- new keyword
-- this keyword

-- UML(Unified Modeling Language)

>> 객체지향 분석 설계시에 사용하기 위한 표준 표기방법
>> Class Diagram

-- UML Tools

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

-- 소스파일 구조 : package, import
-- 클래스파일 구조 :

>> 속성, 기능
>> 멤버변수, 생성자, 메서드

-- 변수
-- 데이터타입

자바 특징

-- 객체지향(Object Oriented)

객체(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
  3. 참조값(reference value) 할당

new 객체 생성 절차

  1. 메모리 할당 : 멤버변수들
  2. 기본값 자동 초기화
    [3. 명시적 초기값 초기화]
  3. 생성자 수행
  4. 참조값(reference value) 할당

메서드

-- 객체가 해야하는 고유한 기능
-- 메서드명
-- 아규먼트(매개변수) : 갯수, 타입, 순서
-- 반환타입 : 반환값 유무

>> 없으면 void
>> 존재하면 해당 반환타입 : return 반환값; (마지막 수행문)

-- 반환값 : 타입다름

>> 단일 속성 : 기본형
>> 다중 속성 : 객체형
>> 여러개(집합) : 배열, Collection API

-- 메서드 유형

>> 매개변수 유무
>> 반환값 유무

1. 매개변수 없고, 반환타입 없음
2. 매개변수 있고, 반환타입 없음
3. 매개변수 없고, 반환타입 있음
4. 매개변수 있고, 반환타입 있음

return 분기문

-- 메서드 내부에서 사용
-- 해당 메서드를 호출한 메서드로 반환
-- 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;
}

profile
어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧ 

0개의 댓글