다양한 콜렉션의 API들설명(4_콜렉션 프레임워크와 제네릭)


확장for문을 활용할때

for(변수 : 배열)


인대 배열 및 콜렉션이 들어갈수있다.


확장 for문이 매우 빠르다고한다.


- treeSet

add시에 비교후 정렬해서 넣는다.


set 자체를 실제 프로그램에서 사용되는경우가 적다.


- 순서가 있는 콜렉션 << list >>

여기서 순서란 자신이 저장한 순서대로이다.


- ArrayList


arraylist 와 vactor 다른점 : 동기화와 동기화 하지않은점의 차이

나중에 여러군대에서 동시 접근하게될경우가 있다.

arraylist는 동기화가 안되어있다.

동기화 = 동시접근불가

vactor 동기화 되어있다.

하지만 동기화가 되어있으면 비용이 많이 든다.


arrayList는 주로 데이터를 운반할때(운송) 사용된다.


- Vector

기본적으로 크기를 주지않으면 10개로 생성된다.(기본값)

10개가 넘어가면 자동으로 늘어난다.

배수로 늘어난다.(디폴트 생성자)

늘어나는 숫자를 지정할 수 있다(객체 생성시)


for를 쓰면안된다. 동기화 처리가 되어있지않다.


- stack

스텍은 가져올때 제거하면서 가져온다.


stack 메소드를 직접 구현해보기(실기 면접)


- Generic(제네릭)

Java5에서 추가됨

Collection 객체는 저장시 원소를 Object 형으로 Up Casting 해서 관리함으로 인하여 검색시 Down Casting을 해야하는 번거로움이 발생할 수 있다.

제네릭을 사용하여(<타입>) 저장하고자 하는 데이터 타입을 미리 결정한다.

Generic 클래스 정의(25)

Generic 클래스의 필요성 : 클래스 생성시 동적으로 데이터 타입을 받기 위해(자세히 따로 알아보기)


- Queue

스텍(Stack)의 반대개념 (FIFO)

큐(Queue)구현한 대표 클래스 LinkedList

삭제할때 빠르다.

이진트리 개념으로 검색해서 빠르다.

각 원소가 쇠사슬처럼 연결되어있다.


---- 단축키

alt + shift + R : rename all

ctrl + shift + F : 자동 줄맞춤


-------- 오전 끝 ! --------


오후시작

Account 클래스로 자료구조 적용하여 변경하기


Vector는 데이터를 운반할때는 부적합하니

list나 arraylist로 변환해서 보내주는것이 좋다.


arraylist로 반환된 객체는 확장 for을 활용할 수 있다.


-- 스택구현하기

소스보기


-- map 

key , value 로 저장한다

둘다 object 형이되지만 key는 String으로 자주쓴다.

HashMap(비동기화) vs HashTable(동기화)


키가 동일하면 해당 키값의 값으로 덮어버린다.


table과 map 간에 다른 명령어가 하나 있다.

table의 경우 키목록을 가져오기위해서 keys를 쓰는대 반환형이 Enumeration이다.

elements로 값을 반환한다.









'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 4주차 1일 (4주)  (0) 2015.07.27
7월 3주차 4일 (3주)  (0) 2015.07.23
7월 3주차 1일 (3주)  (0) 2015.07.20
7월 2주차 4일 (2주)  (0) 2015.07.16
7월 2주차 3일 (2주)  (0) 2015.07.15
Posted by moyaiori
,

- 예외(Exception) 처리

프로그램 실행중 예기치 않은 사소한 애러들

표준 API에는 프로그램 실행중 발생할 수 있는 예외들을 추상화하여 예외클래스들을 제공하며 JVM은 해당 예외 인스턴스를 생성하여 예외를 발생시킨다.


예외클래스들도 Object를 상속받는다.

예외가 발생했을시 프로그램이 셧다운된다.

예외 이후의 프로그램 코드는 실행되지않는다.

발생시킨 예외 인스턴스를 개발자가 명시적으로 처리(Handling)하지 않을 경우 JVM은 예외 관련 메시지를 홤녀에 출력한 후 프로그램을 강제 종료한다.


- 예외 직접 처리 (try - catch - finally)

예외가 발생한 메소드 내에서 직접 처리하기 위한 구문


try : 예외가 발생할 가능성이 있는 실행코드들, 주로 입출력, 네트워크 처리, 데이터베이스 연동등

catch : 예외가 발생한 객체를 받아서 처리한다.

finally : 예외가 발생 여부와 관계없이 항상 실행되는 코드, 주로 입출력 리소스해제, 데이터 베이스 연결 종료등, 

리소스를 해제하는코드(끊는코드)할때 주로 사용, 

return이 있어도finally 구문은 실행된다.

system.exit(0)를 실행시키면 JVM이 종료되기때문에 finally가 실행되지않는다.


NullPointerException : 값이 할당되지않았을때 사용할려고할때

ArithmeticException : 값을 0으로 나눳을때

ClassCastException : 클래스 형변환이 잘못됫을때(부모-자식관계가 아닐때 형변환)

ArrayIndexOutOfBoundsException : 배열 인덱스를 넘어섯을때

printStackTrace : 모든 예외를 추적한다. 디버깅용(사용자 출력용 아님)


- 예외 간접 처리(throws)

메소드명 throws 에외 클래스1, ~~

throws는 발생된 예외를 메소드내에서 직접 처리하는 것이 아니라 호출한 메서드에게 발생한 예외 인스턴스를 떠넘겨 간접적으로 처리하는 방법이다.


메인에서 throws 를 준다는건 예외처리가되는것이 아니다.

어딘가에서는 try 문으로 예외처리를 해줘야한다.


예외를 두가지로 구분한다.


1. compile check exception - 주 목적이다.

2. runtime exception - 주로 앞에서 다룬 내용은 이 예외이다.


예외 처리 대상은 컴파일 체크 예외(1. compile check exception) 만 해당된다

2는 개발자의 실수이기때문에 예외처리를 한다는거 자체가 말이안된다.


Object <- Throwable <- Exception <- RuntimeException 이 위에서 한 2번의 예외처리이며 4개를 빼고난 나머지는 모두 1번이다.


read 클래스에서 throws로 호출하는쪽에서 예외처리하도록 되어있다.

이유는 어떤 예외가 발생하지모르기때문에 호출하는쪽에서 처리하도록한다.


프로그램이 일정 타이밍에 멈춰있는걸 블락메소드라고 한다.


- 예외 인위적 발생(throw)

예외는 기본적으로 JVM에 의해 발생하지만, 개발자가 프로그램 로직 상 강제적으로 예외를 발생 시킬 수 있다.

throw new 예외클래스();

----------------------------- 오전끝!! -----------------------------


- 사용자 정의 예외 클래스

잘 알려진 예외(Built-in)가 아닌 프로그램 로직 상 필요한 더 구체적인 예외처리를 위해 개발자가 직접 예외클래스를 만들어 사용할 수 있다.

java.lang.exception클래스를 확장(상속)하여 사용자 정의 에외클래스를 정의한다.


오버라이딩시에 메서드 선언부가 같아야한다. 라는 제약조건이있는대 그때 Excetion 까지 같아야 오버라이딩이다.

 제외하면 새로정의된 함수가 된다. 

하지만 접근제한자의 경우 더 넓어야하지만 예외처리는 같거나 더 자식일경우만(구체적) 가능하다. 그말인즉슨 예외처리할 클래스를 확장한 클래스까지 가능하다.


- 자료구조와 Collection Framework

배열 : 하나의 타입형만 가능, 한번 선언하면 바꿀수 없다. <-- 이와 같은 문제점이 있기때문에 collection 가 나왔다.


자료구조 : 다수의 데이터에 대한 효율적 관리와 검색 속도 향상을 위한 데이터 저장 구조

- 자바 콜렉션 프레임워크(Collection Framework)

데이터 집합(자료구조)을 추상화하여 만든 정형화(표준화)된 틀

자바 표준 API에는 배열의 제약사항을 개선하여 다수의 데이터를 체계적이고 효율적으로 관리(저장, 검색, 수정, 삭제)할 수 있도록 자료구조를 표준화(정형화)시킨 인터페이스돌과 클래스들의 묶음을 제공한다.

표준화된 틀 이라서 프레임워크라고 한다.(프레임워크란 말을 쓸수있다면 인터페이스가 구현되어있다고 본다.)

인터페이스가 잘 나타나 있다.

클래스중에서 특정 클래스 라이브러리로 만들어진것을 프레임워크라고한다.


컴포넌트 : 인터페이스를 구현한 클래스

내맘대로 만들면 클래스 인터페이스를 구현하면 컴포넌트


해시 = 동그랑땡 = 여러가지를 뭉쳐놓음

인터페이스가 비슷하기때문에 적당히 비슷하게 쓸수 있다.


set : 순서가 없으며 중복을 허용하지않는 특정의 데이터 구조(보따리)

List : 순서가 있으며 중복을 서용하는 특정 데이터 구조

Queue : 선입 선출

Stack : 선입 후출

---- 여기까지 콜렉션

Map(위와 다르게 상속이 아니고 단독이다) : Key와 Value를 쌍으로 관리하는 데이터 구조


set 메소드 구현실습
















'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 3주차 4일 (3주)  (0) 2015.07.23
7월 3주차 2일 (3주)  (0) 2015.07.21
7월 2주차 4일 (2주)  (0) 2015.07.16
7월 2주차 3일 (2주)  (0) 2015.07.15
7월 2주차 2일 (2주)  (0) 2015.07.14
Posted by moyaiori
,

추상클래스 - 클래스간 수직적 규약

인터페이스 - 클래스간 수평적 규약 


인터페이스도 다형성을 지원한다.

실현관계 (인터페이스 < - > 하위 클래스) 라고 일컷는다.

스테레오 타입(UML) : uml의 구성요소중에 없는것울 추가(확장)해서 사용하고싶을때 사용(6)(<<interface>>)

 인터페이스는 100% 추상클래스이다.


추상클래스는 100% 추상클래스로만 이루어져있지 않다.


컴파일시 "public abstract"가 자동으로 추가된다.


자동으로 붙는것들

디폴트생성자

extends obejct

생성자의 super()

public abstract, interface 앞에 public이 붙는다.

interface에서 변수에"public static final" 입력해준다.


인터페이스 내의 모든 변수는 상수로 인식한다.

자동으로 "public static final" 입력해준다.


인터페이스는 "implements" 예약어로 사용한다.


인터페이스의 목적은 다중상속이다 -> 틀린말은 아니지만 부가적으로 다중상속을 지원한다.


인터페이스의 가장큰 목적은 규격을 위해서 사용한다.

인터페이스간의 다중상속을 지원한다.(13)


추상클래스와 인터페이스의 차이점(14) 알아두기

인터페이스에서는 상속 = 구현 이라고 생각하면된다.


- UML 클래스다이어그램을 이용한 객체 모델링.ppt

요구사항을 정의, 분석중 분석에서 설계과정에서 쓰이는 방법


UML - 객체지향 분석/설계의 산출물인 각종 모델들을 표현하기 위해 사용하는 통합[표준] 그래픽 언어


클래스 다이어그램 - 클래스를 이용하여 시스템의 정적인 모델(시스템구조)을 표현


클래스 다이어그램 의 3가지 구성요소 : 이름, 속성, 행위

가시성 : 공개범위를 정의한다.(7)

스코프 : 속성이나 메소드가 사용되는 범위를 나타낸다. 인스턴스, 클래스(8)

관계 : 클래스와 클래스 사이에 어떠한 관계가 있는지 나타낸다. 서로 양방향 관계가 있을시 화살표가 없다.


관계설정 -> 객체, 속성과 기능 정의


관계다중도 : 관계를 맺고 있는 클래스의 인스턴스 수를 나타낸다.(10)

고정값, 복수, 범위, 세트등을 하나낼수있따.

고정값 : 1, 2, 10

복수 : *

범위 : 0..1, 5..*

세트 : 2,4,6,8


관계다중도를 0개이상 사용할수있다.


유도가능성(방향성) : 클래스 사이에 존재하는 관계의 일정한 방향성(11)

관계 역할 : (12)

관계 집합 : 클래스-클래스 혹 객체-객체 간의 전체 - 부분 관계가 존재함을 의미(13)

관계 복합 : 클래스-클래스 혹 객체-객체 간의 전체 - 부분 관계이며 그 연결이 매우 강함을 의미

전체쪽 인스턴스가 소멸되면 부분쪽 인스턴스도 같이 소멸하게된다.(같은 라이프사이클을 탄다)

관계 의존 : 한 클래스가 다른 클래스에 어떤 형태로든 의존하고 있음을 나타냄, A객체가 B객체를 사용한다. 일시적 사용 관계, 코드상에서 지역변수로 활용

관계 실현 : 인터페이스, 클래스 다이어그램에선 세모 모양이고, 동그라미로 인터페이스를 만들경우 실현관계는 그냥 실선으로 표시된다.


----- final

클래스에 붙이면 상속금지

변수에 붙이면 상수

메서드에 붙이면 오바라이딩 금지


-----------------------------------------------------------------------

이클립스 설치!!


perspective 설정해주기 -> Java EE < - > Java 프로젝트 설정을 할수 있다.


프로젝트 생성하기

Project layout 설정


- 이클립스 폰트 바꾸기

windows -> 설정 -> color and font -> basic -> textfont 바꾸기


sysout + ctr + space 를 누르면 템플릿을 가져온다.


설정 -> 일반(general) -> keys 에서 단축키 변경


workspace의 metadata를 복사해서 옴기면 환경설정이 복사된다.


- 디버깅 방법


- Java 5.0의 실용적 추가 기능들

확장 for문(for each) : 배열이나 콜렉션에서 변수의 시작과 끝을 몰라도 반복처리 해준다.

오토박싱/언박싱 : 래퍼클래스로 자동 현변환해준다.

static import : 클래스의 클래스 변수나 클래스 메소드를 static import를 통해서 코드량을 줄여서 사용할 수 있다. 잘못사용하면 가독성이 떨어진다.

가변인자 : 인자의 개수가 일정하지 않은 가변길이 인자를 지원한다.

(int... arg) 형태로 가변배열로 인자값을 받아와서 처리할 수 있다.


나머지는 시험공부!! 내일 시험은 AM 10:00 예정









'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 3주차 2일 (3주)  (0) 2015.07.21
7월 3주차 1일 (3주)  (0) 2015.07.20
7월 2주차 3일 (2주)  (0) 2015.07.15
7월 2주차 2일 (2주)  (0) 2015.07.14
7월 2주차 1일 (2주)  (0) 2015.07.14
Posted by moyaiori
,