JAVA 주소목록 출력 DAO + getter&setter메서드 (자바빈), 접근제한자

2023. 1. 17. 23:20·BE/Java [Servlet , Spring]

 자바빈 (Java bean) 

- Java 프로그래밍 언어에서 사용되는 객체지향 기법

- Java Bean은 특정한 규칙을 따라 작성된 클래스로, 데이터를 저장하고 관리하는 용도로 사용된다.

- 클래스의 프로퍼티(속성)를 정의하고 관리하는 getter/setter 메소드를 가지고 있으며, 일반적으로 생성자를 가진다.

- 일반적으로 serializable 인터페이스를 구현하여 객체를 직렬화할 수 있도록 한다.

- 주로 웹 개발에서 폼의 입력 값을 저장하고 전달하는데 사용된다.

 

접근제한자 

클래스나 메서드를 생성할 때 앞에 붙는 public은 접근 제한자를 의미한다. (소문자로 작성)

 

< 접근 제한자 종류 >

private - 같은 클래스 안에서만 사용 가능

public - 다른 클래스에서도 사용할 수 있음(공용)

default(지정 X) - 같은 패키지 안에서만 사용 가능

 

1. 메인 클래스에서 메뉴 생성(틀) -> 메인에서는 다른 클래스를 가져와서 사용
2. 필드+자바빈 만드는 클래스 생성 (접근제한자 private로 필드 생성 후 getter, setter)
3. (불러온 파일) 데이터 관리하는 메서드 모아둔 클래스 생성 DAO(DataBase Access Object)

 <필드관리 클래스(getter&setter 자바빈 생성)> 

 

package ex25;
public class Address { 
	private String no;
	private String name;
	private String address;	
	
	public String getNo() { 
		return no;
	}
	public void setNo(String no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
}

 

- private 필드 작성 후 마우스 우클릭 - 소스 - getter setter 메서드 생성 - 전체 필드 선택

** 메서드 생성 시 get, set뒤에 자동으로 변수명 첫 글자가 대문자로 바뀜

 

 getter 

- setter로 입력받은 값을 return해주는 메서드로. get필드변수(매개변수) 형태이다. **매개변수는 받지 않음

- 값을 사용할 때 호출하며 형태는. getNo()와 같이 쓴다

위 필드로 예를 들면

Address클래스로 생성한 변수 뒤에. getNo()를 붙여 setter로 받은 번호 데이터 출력

(Address a = new Address) -> a.getNo( ) -> get뒤에는 Address클래스에서 생성한 필드의 변수이다.

 

 setter 

- setter는 값 넣을 때 쓰는 메서드로 .set필드변수(매개변수) 형태이다. **매개변수를 받는다.
- set메서드로 넣은 값이 해당 필드에 입력되어 저장됨 -> 필드별로 set메서드가 생성되었기 때문
* 안에 데이터는 next메서드로 입력받아 넣을 수도 있다.

< 데이터관리 클래스 > DAO 

- 보통 파일의 용도를 알려주기 위해 클래스 명을 필드클래스+DAO로 작성한다

1. File메서드로 새 파일 생성한 뒤 불러올 파일의 경로를 작성한다
-> File 변수명 = new File("경로");

** 메모장 파일을 불러올 때 인코딩을 ANSI로 저장한 뒤 불러와야 한글이 깨지지 않는다.

2. 각 데이터를 관리할 메서드를 생성한다. return값이 있는 메서드면 형식 지정 / 없으면 void를 쓴다
**리턴값이 있는 메서드 안에는 return값을 아래에 작성해줘야 함! -> 맨 아래가 아니면 오류 난다.

 

  DAO 클래스 -> 주소 목록 생성하는 list메서드

package ex25;

import java.io.*;
import java.util.ArrayList;

public class AddressDAO {
	File file = new File("c:/workspaceJava/address.txt"); //파일 가져오기
    
    public ArrayList<Address> list(){				
            ArrayList<Address> array = new ArrayList<Address>();
            try {
                BufferedReader reader = new BufferedReader(new FileReader(file));
                String line = "";
                while((line=reader.readLine())!=null) {
                    String[] items = line.split(",");
                    Address vo = new Address();
                    vo.setNo(items[0]);
                    vo.setName(items[1]);
                    vo.setAddress(items[2]);
                    array.add(vo);
                }			
                reader.close(); 
            } catch (Exception e) {
                e.printStackTrace();
            }		
            return array;		
        }

1. 목록을 받아올 거라 return값 ArrayList의 Address클래스의 데이터 받는 list 메서드 생성

**ArrayList< > - 꺽쇠 안에 클래스 타입 지정 안 해주면 전체 배열을 읽어온다.

2. return값이 없으면 오류 나기 때문에 ArrayList클래스로 배열 객체 array 생성한 뒤에 맨 아래에 return array작성해 준다. 

3. 파일을 읽어오기 위해서는 버퍼 리더기가 필요해서 BufferReader 클래스로 reader 리더기 객체 생성해 파일을 담아준다.

** new FileReader()는 Java.io에서 제공하는 기본 생성자임

4. 버퍼를 사용하려면 오류를 판별해 주는 try ~ catch문에 담아줘야 한다. (짝꿍)

5. 처음에 생성하면 catch(FileNotFound Exception e)과 같이 exception 앞에 오류 경우를 자동으로 부여해 주는데 이걸 지워줘야 전체 오류를 처리해 줄 수 있다. -> 안 지우면 File Reader 오류남.

6. 저장한 데이터를 한 줄씩 읽기 위해 String line = "";으로 초기화 값 생성

7. while문으로 line = reader.readLine() 이 null이 아닌 경우(true) 데이터를 한줄씩 읽어 값을 담아준다.

- readLine( ) 메서드는 버퍼에 저장된 데이터를 한 줄씩 읽어 주며 이 데이터는 line에 저장된다.

8. Address 클래스의 get&set 메서드 사용하기 위해 & 해당 필드로 데이터 저장해 주기 위해 객체 vo객체 생성해 준다.

-객체 생성은 while문 안에다 작성해 줘야 목록이 전체 출력된다.(객체 생성과 데이터 삽입을 같이 반복)

-보통 vo는 value object라고 해서 값이 들어있는 객체라는 뜻임

9. line에 들어간 데이터는 , (쉼표)로 구분되어 있어  String타입 배열[ ] items를 생성한 뒤 split으로 쉼표를 잘라 데이터를 넣어준다.

**. split(" ") : "" 안에 지정한 기호를 기준으로 데이터를 자른다. **인식 못하는 특수문자는 [ ] 대괄호로 감싸주면 됨

- split으로 자른 데이터는 String타입으로 변환되기 때문에 숫자인 경우 Integer.parseInt로 감싸줘야 제대로 인식된다.

10. Address 클래스의 vo 객체에 set 메서드를 사용해 번호(no), 이름(name), 주소(address)를 각각의 items 배열에 담아준다.

-  쉼표 기준으로 자른 각각의 데이터는 items의 각 인덱스에 들어가 있고 그 데이터를 vo의 각 필드에 담아주는 것임

11. array.add(a)로 배열에 담아준다.

12. 버퍼리더기 사용 후 닫아주기 위해 while문 바깥에 reader.close()를 작성한다.

 

  Main 클래스 - while문 안의 switch ~case에서 2번 누르면 주소목록 출력하는 부분

case 2:
        ArrayList<Address> array = dao.list();
        for(Address a:array) {
            System.out.printf("%s\t%s\t%s\n",a.getNo(),a.getName(),a.getAddress());

            }

1. 위에서(while문 바깥) AddressDAO 클래스의 dao객체를 생성해 놓는다.

2. dao객체에 만들어둔 list() 메서드를 사용해 각 배열에 저장해 둔 파일 데이터를 담는 array를 생성(Address타입 데이터)

3. for 반복문을 통해 주소 목록을 출력한다

4. (Address a:array) -> array 배열의 데이터를 Address 타입의 a객체에 담아준다.

5.  a객체에 get메서드로 저장해 둔 각 필드의 데이터를 호출해서 printf문으로 출력한다.

** split으로 자른 데이터는 string타입이다.

'BE > Java [Servlet , Spring]' 카테고리의 다른 글

Oracle(SQL Developer) & JAVA 상품 주문 관리 프로그램 리뷰 - 1. SQL문  (0) 2023.01.24
Oracle (SQL Developer) 테이블 생성 + JAVA 연결  (0) 2023.01.17
Java 차량 관리 프로그램 리뷰 - 클래스 생성하기(필드, 생성자, 메서드 오버로딩)  (0) 2023.01.09
Java 배열의 합계 및 최대&최소 값 구하기 (Sum, Max, Min)  (0) 2023.01.09
Java 상품 관리 프로그램 리뷰(DecimalFormat, integer parseInt)  (0) 2023.01.08
'BE/Java [Servlet , Spring]' 카테고리의 다른 글
  • Oracle(SQL Developer) & JAVA 상품 주문 관리 프로그램 리뷰 - 1. SQL문
  • Oracle (SQL Developer) 테이블 생성 + JAVA 연결
  • Java 차량 관리 프로그램 리뷰 - 클래스 생성하기(필드, 생성자, 메서드 오버로딩)
  • Java 배열의 합계 및 최대&최소 값 구하기 (Sum, Max, Min)
시녜's
시녜's
성장중인 새싹 개발자 🌱
  • 시녜's
    개발기록
    시녜's
  • 전체
    오늘
    어제
    • 분류 전체보기
      • FE
        • React
        • javascript(jQuery)
        • HTML & CSS
      • BE
        • Java [Servlet , Spring]
        • C & C++
        • Node.js
        • node.js
        • SQL (Oracle, mysql)
      • CS
        • 프로그래밍 이론(정보처리기사)
      • Etc
        • 코딩 챌린지
        • 개발 성장 일지
        • 코딩테스트
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    React
    자바기초
    jquery
    백준
    mysql
    자바반복문
    백준문제풀이
    javascript
    jsp
    자바스크립트
    코딩기초
    리액트
    코딩테스트입문
    코테기초
    코딩테스트
    html
    백준브론즈
    스프링
    프로그래밍
    CharAt함수
    백준코딩테스트
    자바조건문
    코테
    제이쿼리
    자바배열
    자바
    코딩입문
    자바문자열
    백준단계별문제
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
시녜's
JAVA 주소목록 출력 DAO + getter&setter메서드 (자바빈), 접근제한자
상단으로

티스토리툴바