본문 바로가기

Archived(CSE Programming)/Java

Java_자바의 기본

# Java(OOP) > 유지보수의 효율성

  • 은닉화(Encapsulation) 객체의 탈 자체를 숨기고 다형성 구현
  • 상속(Inheritance)
  • 다형성(Polymorphism)
  • 추상화(Abstraction

# 업무 개발환경 세팅 -> JDK 1.6 ~ 1.7

JDK 내부의 JRE 라는 실행환경 존재

 

 

 

# OOP에 대하여

 

 

핵심은 클래스는 인스턴스가 아니다

클래스에 선언된 변수와 메서드는 인스턴스 소유이다

유저 인터페이스 / 비즈니스 로직, 데이터 처리부 등

 

개발은 class를 만드는 것이고 다음의 레이어들을 구분하여 설계 및 구현한다.

 

유저를 위한 프리젠테이션 레이어,

제어를 위한 컨트롤 레이어,

처리를 위한 비즈니스 레이어,

데이터 영속성을 관리할 수 있는 퍼시스턴스 레이어,

데이터를 표현하는 실질적인 비즈니스 객체인 도메인 모델 레이어

https://postitforhooney.tistory.com/entry/Spring-MVC-%ED%8C%A8%ED%84%B4%EC%97%90%EC%84%9C%EC%9D%98-5%EA%B0%80%EC%A7%80-%EA%B3%84%EC%B8%B5%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%B3%B4-%ED%8D%BC%EC%98%B4

 

[Spring] MVC 패턴에서의 5가지 계층에 대한 정보 - 퍼옴

http://egloos.zum.com/mt1716/v/9291203 스프링을 통해 최근 자바 커뮤니티의 관심이 집중되고 있는 IoC 컨테이너와 AOP에 대한 개념을 접해보도록 하자. 그리고 스프링을 스트럿츠와 연동하기 위해 필요한 절차..

postitforhooney.tistory.com

이러한 여러 레이어들의 관계 속에서 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/

 

DAO vs DTO(=VO) 개념 알아보기 - Jungwoon Blog

DAO vs DTO(=VO) 개념 알아보기 위의 단어의 뜻을 모를 수는 있는데 내용을 보면 평소에 사용하고 있던 개념일 수도 있습니다 (개인적으로 제가 그랬네요) 간단히 정리하면서 “아~ 이게 이거였구나

jungwoon.github.io

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

https://seohs.tistory.com/488

 

[스크랩] 이클립스 단축키

이클립스 단축키 정리 (http://blog.daum.net/sualchi/13720369) —– 실행 —– Ctrl + F11 : 이전에 실행했던 클래스 실행 —– 소스 네비게이션 —– Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버..

seohs.tistory.com

# 접근 지정자

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