-- 객체(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)
-- 개념 :
>> 현실 세계에 존재하는 사물 또는 개념
>> 개발자관점 :
>> 프로그램의 대상이 되는 모든것, 프로그램에서 관리해야하는 모든것
>> 관리를 하기 위해서 해당 객체의 정보가 영속성(저장)
-- 구성요소 = 속성 + 기능
>> 속성 : 객체 상태정보
>> 기능 : 객체 행위(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) : 반환타입
-- 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]);
-- 객체가 해야하는 고유한 기능
-- 메서드명
-- 아규먼트(매개변수) : 갯수, 타입, 순서
-- 반환타입 : 반환값 유무
>> 없으면 void
>> 존재하면 해당 반환타입 : return 반환값; (마지막 수행문)
-- 반환값 : 타입다름
>> 단일 속성 : 기본형
>> 다중 속성 : 객체형
>> 여러개(집합) : 배열, Collection API
-- 메서드 유형
>> 매개변수 유무
>> 반환값 유무
1. 매개변수 없고, 반환타입 없음
2. 매개변수 있고, 반환타입 없음
3. 매개변수 없고, 반환타입 있음
4. 매개변수 있고, 반환타입 있음
-- 메서드 내부에서 사용
-- 해당 메서드를 호출한 메서드로 반환
-- return;
>> 반환타입이 없는 void 필요시에 더이상 수행하지 않고 호출측 메서드로 반환
>> 선택
-- return 값;
>> 메서드에 반환타입이 있으면 반드시 마지막 수행문
>> 필수
-- 적용 : 변수, 매개변수, 반환타입
-- 기본형 : byte => short, char => int => long => float => double
-- 참조형 : 자식 클래스 (sub-class) => 부모클래스(super class)
-- 메서드이름 동일
-- 아규먼트(매개변수) 다름 : 갯수, 타입, 순서
-- setter()
-- 성적(score) 변경 메서드
public void setScore(int modifyScore) {
score = modifyScore;
}
-- getter()
-- 성적(score) 조회 메서드
public int getScore() {
return score;
}