본문 바로가기
Back-End/Java

[Java] 자바 빈(Java Bean), API, 패키지(package)

by 찐코딩 2021. 8. 18.

자바 빈(Java Bean)

- DB에 접근하여 특정 컬럼(속성)에 값을 저장하거나 저장된 값을 가져오는 자바 클래스

 - Java Bean = DTO(Data Transfer Object) = VO(Value Object)

 위 세개의 이름으로도 불리운다!

 - 구성요소
   1. 멤버변수 - DB 컬럼명 : 접근지정자(private)
   2. setter() : 지정자 메서드

   3. getter() : 획득자 메서드

 

API(Application Programming Interface) 

  - 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들의 집합을 말함. 

  => 프로그래밍을 위해 미리 준비된 도구들
  - JDK를 설치를 하면 자바 시스템을 제어하기 위한 API들을 제공해 주고 있음. 
  - 자바 개발자들은 자바에서 제공한 API를 이용해서 자바 어플리케이션을 만들게 됨. 
  - API 문서들을 모아 놓은 곳 : http://docs.oracle.com/javase/8/docs/api/

 

Java Platform SE 8

 

docs.oracle.com

사용방법

1. 사용하고 싶은 패키지 영역에서 원하는 패키지 찾아 클릭한다
2. 해당 패키지 영역에 속하는 클래스 영역이 변경된다.
3. 클래스 영역에서 원하는 클래스 찾아 클릭
4. 상세 페이지에 해당 클래스의 상세 설명이 나온다.

 

 

Java API 예

Math 클래스, Random 클래스, ArrayList 클래스 등

//Math 클래스 사용 예시

// 패키지 내 클래스 불러오기
import java.lang.Math;

// 호출 되었다면 아래와 같은 문장들을 예로 사용할 수 있다.
double r = Math.random();	// 0.49833...
double a = Math.abs(-9.81);	// 9.81
double greater = Math.max(3.14, 12.7); //12.7
double smaller = Math.min(3.14, 12.7);	//3.14

 

// random 클래스 사용 예시
import java.util.Random;

// 사용 예
Random random = new Random(); // 객체 생성
int a = random.nextInt(10); 	// 0 <= a <10
double b = rand.nextDouble();	// 0.0 <= b < 1.0
boolean c = rand.nextBoolean(); // true or false

 

// ArrayList 사용 예시

// 패키지 내 클래스 불러오기
import java.util.ArrayList; 		// java.util: 패키지, ArrayList: 클래스

// 사용 예
ArrayList<String> names = new ArrayList<String>();	// <String>을 담기위한 ArrayList 생성

// 차례로 names[0]~[2]까지 해당 내용 저장
names.add("Kim");
names.add("Lee");
names.add("Park");

System.out.print(names.get(2));	// 2번 인덱스의 값을 get 메서드를 통해 출력
names.remove(1);	// 1번 인덱스 값을 remove 메서드를 통해 삭제. ArrayList의 특이한 점은 아예 칸이 삭제됨
System.out.print(names.size());	 	// 따라서 2가 출력됨

 

자주 등장하는 Util 패키지는 따로 정리하여 포스팅 하였다.

https://jinnnkcoding.tistory.com/35?category=877423 

 

[Java] Util 패키지의 주요 클래스

1. Random 클래스  - 지정된 범위 내에서 임의의 난수를 발생시키는 클래스. - 생성자 Random()은 아래와 같이 종자값을 System.currentTimeMillis()로 하기 때문에 실행할 때마다 얻는 난수가 달라진다. System

jinnnkcoding.tistory.com

 

패키지(package)

 - 서로 연관성이 있는 클래스들과 인터페이스들의 묶음을 말함.

 - 자바 API가 담겨진 일종의 폴더
 - 패키지는 물리적으로 폴더 개념과 유사함.
 - 패키지는 서브패키지를 가질 수 있으며 "."으로 구분함.
 - import 키워드 : 현재 패키지의 클래스에서 다른 패키지에 있는
                 다른 클래스를 사용하고 싶은 경우 import를 해야한다.
                (단, 동일한 패키지에 있는 다른 클래스를 사용시에는 생략 가능)

형식) 

import 패키지명.서브패키지명.클래스명;

 

 


MemberDTO라는 클래스 생성(Model패키지에)

package Model;

public class MemberDTO {
	
	// 만약 DB상의 테이블의 이름이 member(회원 테이블) 이라고 가정했을 때
	// member 테이블의 구성(컬럼)이 
	// id, pwd, name, age, phone, address 로 구성되었다고 가정을 하면,
	
	// 멤버변수
	private String id; 		// 회원아이디
	private String pwd;		// 회원비밀번호
	private String name;	// 회원 이름
	private int age;		// 회원 나이
	private String phone;	// 회원 연락처
	private String address;	// 회원 주소
	
    // 멤버변수가 private 타입이므로, getter와 setter 받기
	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;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

예제01 클래스 생성(package 패키지에)

package Package;

import Model.MemberDTO; // model 패키지에 있는 MemberDTO 클래스를 사용하기 위해 호출

public class Ex01 {

	public static void main(String[] args) {
		
        // 객체 생성
		MemberDTO dto = new MemberDTO();
		
        // 객체 초기화
		dto.setId("Hong");
		dto.setPwd("1234");
		dto.setName("홍길동");
		dto.setAge(27);
		dto.setPhone("010-1234-5678");
		dto.setAddress("서울시 마포구");
		
		//화면에 출력을 해보자
		System.out.printf("회원 아이디 : %s\n", dto.getId());
		System.out.printf("회원 비밀번호 : %s\n", dto.getPwd());
		System.out.printf("회원 이름 : %s\n", dto.getName());
		System.out.printf("회원 나이 : %d\n", dto.getAge());
		System.out.printf("회원 주소 : %s\n", dto.getAddress());
	}
}

 

 

사실 이렇게 변수에 직접적으로 값을 넣어서 출력하는 경우는 잘 없으므로,

응용해서 키보드로 값을 받아서 출력해보도록 하자.

위에서 사용한 MemberDTO 클래스를 가지고 예제02를 만들어 풀어보자.

package Package;

import java.io.ObjectInputStream.GetField;
import java.util.Scanner;

import Model.MemberDTO; // model 패키지에 있는 MemberDTO 클래스를 사용하기 위해 호출

public class Ex02 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		// 1. 회원 수를 키보드로 입력을 받아서 객체 배열에 회원 수를 입력해보자
		System.out.print("회원 수를 입력하세요.");
		MemberDTO[] dtos = new MemberDTO[sc.nextInt()];
		
		// 2. 반복문을 이용하여 회원수 만큼 회원 정보를 키보드로 입력 받기
		for(int i=0; i<dtos.length; i++) {
			dtos[i] = new MemberDTO();
			
			System.out.printf("%d번째 회원의 아이디, 비밀번호, 이름, 나이, 연락처, 주소를 입력하세요\n", (i+1));
			
			dtos[i].setId(sc.next());
			dtos[i].setPwd(sc.next());
			dtos[i].setName(sc.next());
			dtos[i].setAge(sc.nextInt());
			dtos[i].setPhone(sc.next());
			String some = sc.nextLine();  // 오류 해결 위해 nextLine() 추가
			dtos[i].setAddress(sc.nextLine());
		}
		
		// 3. 반복문을 이용하여 객체 배열에 저장된 데이터들을 화면에 출력해보자
		System.out.printf("아이디\t비밀번호\t이름\t나이\t연락처\t\t주소\n");
		for(int i=0; i<dtos.length; i++) {			
			System.out.printf("%s\t%s\t%s\t%d\t%s\t%s\n", 
				dtos[i].getId(), dtos[i].getPwd(), dtos[i].getName(), dtos[i].getAge(), dtos[i].getPhone(), dtos[i].getAddress());
			System.out.println("::::::::::::::::::::::::::::::::::");
		}

	}

}

 

'Back-End > Java' 카테고리의 다른 글

[Java] final 지정자  (0) 2021.08.18
[Java] 접근지정자(접근제어자) 권한  (0) 2021.08.18
[Java] 다형성(polymorphism)  (0) 2021.08.18
[Java] 인터페이스(Interface)  (0) 2021.08.17
[Java] 상속_추상클래스(abstracts class)  (0) 2021.08.17

댓글