Perspective를 Java로 변경

interface 'List' ( esp. ArrayList ) 복습 – 9월 23일 참조

< collection – collection – ListTest01 >

< collection – collection – Member >

< collection – collection – MemberInsertDTO >

package collection;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class ListTest01 {
	
	public static void main(String[] args) {
		
		/* 
		[ List<E>(interface) ]
		- implements Collection<E>(interface)
		- 데이터 저장 시 : 순서를 유지(인덱스 번호 有) / 중복 허용 / 무한 저장 가능
		- 데이터 타입을 구분하지 않는다
		- 데이터를 타입을 구분하기 위해, '그때그때마다 Casting'을 하거나 'Generic으로 표현(내가 원하는 시점에 데이터 타입을 일괄 적용)'한다
		*/
		
		// ArrayList
		List<Member> list = new ArrayList<>();
		
		// Vector( 멀티스레드에서 안전하게 처리하기 위해, synchronized 메서드로 구성 )
		// List<Member> list = new Vector<>();
		
		
		
		
		
		// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
		Member mem = new Member();
		
		mem.setNo(1);
		mem.setEmail("이메일1");
		mem.setPass("1111");
		mem.setNick_name("별명1");
		mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
		
		// Member 객체에 '저장'된 데이터를, list에 데이터 <삽입>
		list.add(mem); // 0번 인덱스에 <삽입>
		
		
		
		// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
		mem = new Member();
		
		mem.setNo(2);
		mem.setEmail("이메일2");
		mem.setPass("2222");
		mem.setNick_name("별명2");
		mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
		
		// Member 객체에 '저장'된 데이터를, list에 데이터 <삽입>
		list.add(mem); // 1번 인덱스에 <삽입>
		
		
		
		// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
		mem = new Member();
		
		mem.setNo(3);
		mem.setEmail("이메일3");
		mem.setPass("3333");
		mem.setNick_name("별명3");
		mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
		
		// Member 객체에 '저장'된 데이터를, list에 데이터 <추가>
		list.add(1, mem); // 1번 인덱스에 <추가> -> 원래 있던 데이터들의 인덱스가 한 칸씩 뒤로 밀림
		
		
		
		// 세터(setter) 메서드를 활용하여, Member 객체에 데이터 '저장'
		mem = new Member();
		
		mem.setNo(4);
		mem.setEmail("이메일4");
		mem.setPass("4444");
		mem.setNick_name("별명4");
		mem.setCreated_date(new Timestamp(System.currentTimeMillis()));
		
		// Member 객체에 '저장'된 데이터로, list 데이터를 <수정>
		list.set(1, mem); // 1번 인덱스를 <수정>
		
		
		
		
		
		// 게터(getter) 메서드 및 [ for(구성요소를 저장 가능한 변수 선언 : 컬렉션) ]를 활용하여, list의 데이터를 출력
		for(Member m : list) {
			System.out.print(m.getNo() + " : ");
			System.out.print(m.getEmail() + " : ");
			System.out.print(m.getPass() + " : ");
			System.out.print(m.getNick_name() + " : ");
			System.out.println(m.getCreated_date());
		}
		
		
		System.out.println("------------------------------------");
		
		
		// 게터(getter) 메서드를 활용하여, list에 있는 첫번째 데이터(인덱스 번호 : 0)만 출력
		Member m1 = list.get(0);
		
		System.out.print(m1.getNo() + " : ");
		System.out.print(m1.getEmail() + " : ");
		System.out.print(m1.getPass() + " : ");
		System.out.print(m1.getNick_name() + " : ");
		System.out.println(m1.getCreated_date());
		
	}

}
package collection;

import java.sql.Timestamp;

public class Member { // 모든 종류의 데이터(no, email, pass, nick_name, created_date)를 관리
	
	// 보안을 위해, 멤버 필드를 Encapsulation(private으로 설정)  <=  우회해서 접근하기 위해, 게터(getter)와 세터(setter) 메서드를 활용한다
	private int no;
	private String email;
	private String pass;
	private String nick_name;
	private Timestamp created_date;
	
	
	
	// 게터(getter) 메서드 : [ private 전역변수(파란색) ]를 읽어 들일 때 사용  ->  즉, [ private 전역변수(파란색) ]를 return 함
	// 세터(setter) 메서드 : 외부에서 데이터를 받아와서 이를 [ 매개변수(갈색) ]에 저장. 그 후에, 이를 [ private 전역 변수(파란색) ]에 저장. 이 때, return 값이 없기 때문에 void로 설정  
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	/*
	ex) setNo(10)
		: 정수 10을 [ () 안의 매개변수 - int no(갈색) ]에 저장  ->  [ () 안의 매개변수 - int no(갈색) ]에 저장된 정수 10을  [ private 전역 변수(파란색) - private int no ]에 저장 
	*/
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	
	public String getNick_name() {
		return nick_name;
	}
	public void setNick_name(String nick_name) {
		this.nick_name = nick_name;
	}
	
	public Timestamp getCreated_date() {
		return created_date;
	}
	public void setCreated_date(Timestamp created_date) {
		this.created_date = created_date;
	}
	
}
package collection;

public class MemberInsertDTO { // 회원가입 시 필요한 데이터(email, pass)만 개별적으로 관리
														   // DTO(Data Transfer Object) : 개별적인 데이터를 전송하는 모델 
	
	private String email;
	private String pass;
	
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}

}