# Java(OOP) > 유지보수의 효율성
- 은닉화(Encapsulation) 객체의 탈 자체를 숨기고 다형성 구현
- 상속(Inheritance)
- 다형성(Polymorphism)
- 추상화(Abstraction
# 업무 개발환경 세팅 -> JDK 1.6 ~ 1.7
JDK 내부의 JRE 라는 실행환경 존재
# OOP에 대하여
핵심은 클래스는 인스턴스가 아니다
클래스에 선언된 변수와 메서드는 인스턴스 소유이다
유저 인터페이스 / 비즈니스 로직, 데이터 처리부 등
개발은 class를 만드는 것이고 다음의 레이어들을 구분하여 설계 및 구현한다.
유저를 위한 프리젠테이션 레이어,
제어를 위한 컨트롤 레이어,
처리를 위한 비즈니스 레이어,
데이터 영속성을 관리할 수 있는 퍼시스턴스 레이어,
데이터를 표현하는 실질적인 비즈니스 객체인 도메인 모델 레이어
이러한 여러 레이어들의 관계 속에서 Cohesion 높이고 Coupling 낮추기
A에 대한 변경이 B에 대해 미치지 않게 하기 위해 발전되다 보면
MVC 패턴과 Framework 아키텍처 발달
# Domain Object
xxxDAO(data accees)
xxxService
xxxDTO(data transper)
xxxVO(value)
xxxEntity
특정 목적으로 묶어놓은 이러한 이름의 class 들을 Domain Object라고 표현
Cf. DAO vs DTO
https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/
Cf. VO와 DTO의 차이
VO : 사용되는 값 자체를 표현하고 있는 객체(값 변경이 없는 경우), Read Only
DTO : 데이터의 전송을 위한 객체(비지니스 로직까지 포함)
View(JSP, Servlet)은 Presentation Logic 담아야 함
다른 로직을 담고 있으면 곤란(그러나 현업에서는 힘듬)
# JAVA 실습
Java는 컴파일 언어(인터프리터)
메인 메서드가 있어야만 인터프리터를 통해 번역 및 처리
(sysout ctrl + space 통해 println 출력하기)
변수 : 데이터 담는 그릇
메서드 : (데이터를 활용한) 행위
변수 : 접근지정자 / 변수의 타입 / 변수명;
메서드 : 접근지정자 / 반환타입 / 메서드명(매개변수){}
# Java 변수와 메서드
숫자형 : 정수(byte, short int, long) / 실수(float, double)
문자형 : char
문자열 : String (기본 데이터형이 아니지만 기본 데이터형으로 취급)
논리형 : boolean
첫번 째 이름에 대문자 > Class로 취급하자
메서드는 Input -> return(결과)
IO 있고 없고 -> 4가지의 경우
어떤 경우의 메서드가 가장 많이 쓰이는 지? > Input + output
그 다음, Input x / output o
public class ClassTemplate {
public String name = "shinwoong" ;
public int age = 27 ;
public char gender = 'm' ;
public double height = 173.2 ;
// 메서드 구문 형식 및 경우의 수
// #1 no input no output(Setting 용도)
public void printStr() {
System.out.println("문자열");
}
// #2 no input yes output
public int intMethod() {
return age ;
}
// #3 yes input yes output
public String checkGender(char gender) {
return null;
}
// #4 yes input no output
public void sum(int x, int y) {
}
}
# Primitive 원시 자료형 / Reference 참조 자료형
참조 자료형은 주소값을 담는다
Cf. 단축키
Import 자동 처리 : ctrl + shift + o
주석 처리 : ctrl + / (멀티라인 : ctrl + shift + /, 해제 : ctrl + shift + \)
자동 들여쓰기 : ctrl + i 또는 ctrl + shift + f
sysout syserr : ctrl + space
오른쪽 마우스 source > generate getter, setter
# 접근 지정자
public / private
package com.sinc.intern.model.vo;
public class SincVO {
// 전역 변수 or 멤버 변수
private String id, pwd, name ;
}
// SincMain.java
import com.sinc.intern.model.vo.SincVO;
public class SincMain {
public static void main(String[] args) {
// 지역 변수
SincVO obj01 = new SincVO();
obj01.id = "admin";
obj01.pwd = "admin";
obj01.name = "윤신웅";
System.out.println(obj01.id +"\t" +obj01.pwd +"\t" + obj01.name );
}
}
정보 은닉
package com.sinc.intern.model.vo;
public class SincVO {
// 전역 변수 or 멤버 변수
private String id, pwd, name ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// SincMain.java
import com.sinc.intern.model.vo.SincVO;
public class SincMain {
public static void main(String[] args) {
// 인스턴스 생성(주소값을 obj01 변수가 가지고 있다)
SincVO obj01 = new SincVO();
// 값 set
obj01.setId("admin");
obj01.setPwd("admin");
obj01.setName("윤신웅");
System.out.println(obj01.getId() +"\t" +obj01.getPwd()+"\t" + obj01.getName());
}
}
# 생성자
new 연산자 통해 객체 인스턴스 생성
따로 호출할 수 없음
생성 시점에 인스턴스 변수들 초기화해주는 역할
package com.sinc.intern.model.vo;
public class SincVO {
// 전역 변수 or 멤버 변수
private String id, pwd, name ;
// 기본 생성자
public SincVO() {
super();
// TODO Auto-generated constructor stub
}
// 필드 지정 생성자
public SincVO(String id, String pwd, String name) {
super();
this.id = id;
this.pwd = pwd;
this.name = name;
}
...
}
# 요약
서비스의 서버 단에서 Java를 통해 개발
Java -> Class 통한 설계, 개발
변수 / 메소드에 대한 이해
DB 로부터 프론트엔드까지의 이동(Instance를 통해)
접근제어자(private/public), 생성자
'Archived(CSE Programming) > Java' 카테고리의 다른 글
Java_다형성과 컬렉션 (0) | 2020.01.16 |
---|---|
Java_OOP와 다형성 (0) | 2020.01.14 |
Java 깊은 복사와 얕은 복사 (2) | 2019.11.03 |
Java 마커 인터페이스 (0) | 2019.11.03 |
Java_메모리 구조 (0) | 2019.11.03 |