자바 기초(ArrayList 및 설계에 대하여)

4월 19일 내용정리

조만간 자바프로젝트를 시작예정...그전에 프로그램기획 및 설계하는 부분에 대하여 쌤이 대략적으로 설명해 주심

프로젝트를 진행 할때
(1)무엇을 할지 주제 정하기
(2)주제에 따른 무엇을 할수 있는지, 우선 브레이밍 스토밍을 통해 모두 적어본다.
(3)브레이밍스토밍을 통해서 우리가 만들수 있는거 구분하기
전문용어로 기능과 비기능 구분하기 정도?!
(4)만들수 있는 기능을 뽑아내서 속성(필드)과 동작(메서드) 구분하기
(5)클래스로 만들거 뽑아내기
(6)클래스다이어그램 만들어 보면서 관계설정:상속으로 할지 포함으로 할지 정하기
참고로,상속은 관계를 만드는거고 포함은 단순히 정보를 끌어다가 쓸때 쓴다.

1.Arraylist는 동적 배열이다.
수시로 변하는 데이터를 처리할수 있다는 의미.
동적 배열이라 언제든지 데이터를 추가하거나 뺄줄수 있음.
얕은복사는 주소만 복사해서 한쪽을 변경하면 다 변경이되나,
깊은복사는 객체를 복사하기 때문에 한쪽을 변경해도 다른쪽에 영향이 안감. 왜냐면 따로 저장공간을 만들어 복사를 하기 때문

2.ArrayList<참조타입 'E'(=제네릭스)>참조변수=new ArrayList<참조타입 'E'(=제네릭스)>();
이렇게나
ArrayList<참조타입 'E'(=제네릭스)>참조변수=new ArrayList<>();
new 뒤에나오는 지네릭스는 삭제가능하다.

package study_0419;

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

public class Arraylist {
	public static void main(String[] args) {

	Scanner in =new Scanner(System.in);
	ArrayList<Integer>scores=new ArrayList<Integer>(); //뒤에있는 <Integer> -> <>로 생략가능
	int data;
	int sum=0;
	
	while((data=in.nextInt())>=0)
		scores.add(data);
	
	//scores.size() 는 Arraylist의 갯수
	for(int i=0;i<scores.size();i++)
		sum+=scores.get(i);
	
	System.out.println("평균="+(double)sum/scores.size());
}
}

정적배열과 동적배열 차이

package study_0419;

import java.util.ArrayList;

public class StudentArray {

	public static void main(String[] args) {
//		Student[] std=new Student[5]; 정적 배열생성
//		std[0]=new Student("a123","홍길동"); 
		
		ArrayList<Student> std =new ArrayList<Student>(); //동적배열 생성
		std.add(new Student("a123","홍길동")); // 동적배열 데이타넣기
		std.add(new Student("a124","김기자")); // 동적배열 데이타넣기
		std.add(new Student("a125","이자바")); // 동적배열 데이타넣기
		
		//출력
		for(int i=0; i<std.size();i++) {
			Student StuArr=std.get(i); // std의 주소값을 StuArr 넘겨줘
			StuArr.studentInfo(); //StuArr이 가르키고 있는 메서드를 호출해줘
		}
		
		//향상된 for문을 이용
		for(Student st:std) { //std의 주소값을 St에 넘겨줘
			st.studentInfo(); //St가 가르키고있는 주소값으로 가서 메서드 호출해줘
		}

	}

}
package study_0419;

public class Student {
	//인스턴스필드선언
	private String hakban;
	private String name;
	
	
	
	//생성자
	public Student() {}
	
	public Student(String hakban) {
		this(hakban,"홍길동"); //자신의 클래스를 호출할때 쓰는 방법
	}
	
	public Student(String hakban,String name) {
		this.hakban=hakban;
		this.name=name;
	}
	
	//메서드
	/*getter 와 setter 설정
	 *유효성검사 조건에 맞는것만 입력받아 값을 반환할수 있도록 걸러주는 역할을 하기도함 
	 */
	public String getHakban() {
		return hakban;
	}
	public void setHakban(String hakban) {
		this.hakban = hakban;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void studentInfo() {
		System.out.println("학번="+hakban);
		System.out.println("이름="+name);
		System.out.println();
	}
}

좋은 웹페이지 즐겨찾기