본문 바로가기

JAVA

Java_4강

  객체 지향(Object Oriented Programming)

객체 지향 프로그래밍이란 다양한 작업이 가능한 프로그램 코드(명령)들을 클래스로 묶어서 작성하고 다른 묶음과 연계하여 처리하는 프로그래밍 방식을 말한다. 여기서 객체는 변수 + 메소드를 의미한다.

 

객체 지향의 특성)

  • 캡슐화(Encapsulation) : 변수와 메소드를 하나로 묶음 +) 정보은닉(Information Hiding) : 클래스의 구성을 숨김
  • 상속(Inheritance) : 기존 코드를 재사용 + 확장
  • 다형성(Polymorphism) : 같은 이름의 메소드를 만들거나, 대표 클래스로 하위 클래스를 포함시킴

  ArrayList

ArrayList는 배열과 유사한 형태의 저장 구조 객체이다. java.util 패키지에 포함되어 있으며, 상단에 'import java.util.ArrayList;' 문장을 작성해야 한다. 저장은 객체(인스턴스)를 기반으로 한다. '<>' 안에 저장하고 싶은 데이터를 담을 수 있는 클래스를 넣는다. 또한 개발자가 작성한 DTO 클래스도 저장할 수 있다.

 

Generics(제네릭스) => <클래스> : 저장하고자 하는 클래스를 지정하면 그 클래스의 크기에 맞게 최종 설정하여 생성하는 형태(템플릿)

 

ArrayList 활용)

  • 데이터 추가 : add(인스턴스);
  • 데이터 가져오기 : get(idx); => idx : 순번 => 0부터 시작
  • 데이터 삭제 : remove(인스턴스/idx)
  • 전체 데이터 삭제 : clear()

1. 예제 - 작동 class

import controller.ControllerClass;

public class MainClass {
    public static void main(String[] args) {
        ControllerClass cc = new ControllerClass();
        cc.run();
    }
}

 

2. 예제 - 컨트롤 class

package controller;

import dto.DataDto;

import java.util.ArrayList;
import java.util.Scanner;

public class ControllerClass {

    Scanner scan = new Scanner((System.in));

    // 데이터 저장 공간(ArrayList) - 정수 배열
    ArrayList<DataDto> datas = new ArrayList<>();

    public void run() {
        // 지역 변수는 가급적 초기화하기
        String menu = null; // Stirng(객체)은 null

        System.out.println("관리 프로그램");
        System.out.println("===========");

        while(true) {
            System.out.println("1. 입력");
            System.out.println("2. 출력");
            System.out.println("0. 종료");
            System.out.print("입력> ");
            menu = scan.nextLine();

            if (menu.equals("0")) {
                System.out.println("프로그램 종료");
                break; // 또는 return;
            }

            switch (menu) { // 정수/문자/문자열 변수
                case "1":
                    inputData();
                    break;
                case "2":
                    outputData();
                    break;
                default: // 잘못된 입력 처리
                    System.out.println("0~1번 중에 하나를 입력하세요.");
            }
        } // while end
    } // run end

    // 입력 처리용 메소드
    void inputData() {
        System.out.println("⭐ 입력 ⭐");
        System.out.println("--------");

        String inValue = null;
        int num = 0;
        float fnum = 0.0f;
        DataDto data = null;

        // 사용자가 숫자가 아닌 값을 입력한다면?
        try {
            data = new DataDto();

            System.out.print("정수 입력 : ");
            inValue = scan.nextLine();
            num = Integer.parseInt(inValue);
            data.setNumber(num);

            System.out.print("문자열 입력 : ");
            inValue = scan.nextLine();
            data.setStr(inValue);

            System.out.print("실수 입력 : ");
            inValue = scan.nextLine();
            fnum = Float.parseFloat(inValue);
            data.setFnumber(fnum);

        } catch (NumberFormatException nfe) {
            System.out.println("숫자를 입력하세요.");
            return;
        }

        // ArrayList에 값 추가 : add()
        datas.add(data); // push와 같은 일을 하는 메소드
        System.out.println(("입력 완료. 이전 메뉴로 돌아갑니다."));
    } // inputData end

    void outputData(){
        System.out.println("⭐ 전체 출력 ⭐");
        System.out.println("---------------");

        // 데이터의 유무 확인하여 없을 경우 메소드를 종료한다
        if(datas.size() == 0){
            System.out.println("데이터가 없습니다.");
            return;
        }

        int sum = 0;
        for(DataDto d : datas){
            System.out.println("정수 : " + d.getNumber());
            System.out.println("문자열 : " + d.getStr());
            System.out.println("실수 : " + d.getFnumber());
            sum += d.getNumber();
            System.out.println("---------------");
        }
        System.out.println("총합 : " + sum);
        System.out.println("출력 완료. 이전 메뉴로 돌아갑니다");
    }
} // class end

 

3. 예제 - 정보 처리 class

package dto;

public class DataDto {
    private int number;
    private String str;
    private float fnumber;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public float getFnumber() {
        return fnumber;
    }

    public void setFnumber(float fnumber) {
        this.fnumber = fnumber;
    }
}

'JAVA' 카테고리의 다른 글

Java_6강  (0) 2022.09.22
Java_5강(MVC 패턴 예제)  (0) 2022.09.20
Java_3강  (0) 2022.09.18
Java_2강  (0) 2022.09.18
Java_1강  (0) 2022.09.16