'JAVA 계열/자바 & 안드로이드 교육'에 해당되는 글 83건

  1. 2015.07.27 7월 4주차 1일 (4주)
  2. 2015.07.23 7월 3주차 4일 (3주)
  3. 2015.07.21 7월 3주차 2일 (3주)
  4. 2015.07.20 7월 3주차 1일 (3주)
  5. 2015.07.16 7월 2주차 4일 (2주)
  6. 2015.07.15 7월 2주차 3일 (2주)
  7. 2015.07.14 7월 2주차 2일 (2주)
  8. 2015.07.14 7월 2주차 1일 (2주)
  9. 2015.07.10 7월 1주차 5일 (1주)
  10. 2015.07.09 7월 1주차 4일 (1주)

시작!!


오전은 강사님이 병원에 가신 관계로 휴강!


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


getParents() 를 활용하여 부모 클래스의 객체에 접근해서 속성을 가져와서 사용하는 방법이 OOP스러운 방법이다.


주석 작성법

파일주석(/* */) : 회사 및 관련 선언, 도큐먼트에 나오면안되는 주석

변수도 도큐먼트 주석으로 하기, 차후에 도큐먼트 생성시 포함된다.



awt : 기본적인 컴포넌트개념, 레이아웃등.... 

Swing : awt를 상속하여 수많은 비주얼 컴포넌트, Sun에서 개발한것이 아니라 외부(라이트하우스)에서 개발해서 기증, 하지만 광범위해서 복잡하다. 


- awt 다이얼로그(대화상자, 파일대화상자) 만들어보기

새로운 다이얼로그가 띄워졌을때 오너 창을 누를수있는지 구분을 modal 상태 true 라고한다.


Swing api : 플랫폼에 독립적인 GUI 프로그래밍이다.

대부분의 클래스 이름이 'J'로 시작하여 AWT가 제공하는 컴포넌트의 경우 클래스 이름 앞에 J자만 추가하면 쉽게 사용할 수 있다.


거의 모든 Swing 컴포넌트는 JComponent 를 상속받았지만

JFrame은 Frame을 상속(확장)받는다.


JFrame은 닫기 이벤트는 처리되어있지만 완전히 종료되지않기때문에 따로 이벤트처리해주거나 이클립스에서 종료시켜주어야 한다.


Swing 테마로 Frame을 쓸수 있다.

LookAndFeel = 테마

JFrame.setDefaultLookAndFeelDecorated(true); // 기본테마로 되어있다.


JFrame 에서 기본적으로 이벤트를 처리할수있는 메서드가 추가되어있다.

종료처리를 위한 이벤트가 처리되어있다.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); <-- exit 처리

실제로 쓰는것은 권장하지않는다.


크게 AWT에 비해 5개정도 큰 특징이 있다.


Swing의 가장큰 특징은 MVC 모델을 적용한 디자인 컴포넌트이다.


이미지를 프로젝트에 첨부할때는 내부적으로 패키지를 만들어야 나중에 export를 할때 포함된다

좌표를 "classes/images/이미지" 형식으로 한다.


이미지 아이콘을 쓸때 다른 컴퓨터상에 있는 동적으로 받아서 보여줄수도있다. 단 웹서버가 구축되어있는경우에만 가능하다.


swing apis는 모든 컴포넌트에 border(테두리), imageIcon을 삽입할수있다. 내일 추가로 더 진행할예정









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

7월 4주차 3일 (4주)  (0) 2015.07.29
7월 4주차 2일 (4주)  (0) 2015.07.28
7월 3주차 4일 (3주)  (0) 2015.07.23
7월 3주차 2일 (3주)  (0) 2015.07.21
7월 3주차 1일 (3주)  (0) 2015.07.20
Posted by moyaiori
,

시작!


내일 실기 프로젝트 시험!!


---------------------- 오전시작!!

하나의 컴포넌트에 알아서 이벤트가 막 생성된다.

개발자가 따로 지정해주지않아도 알아서 생성됨. 하지만 개발자가 따로 처리해주지않아서 동작하지 않는다.

왠만한건 ActionEvent에서 처리해준다.

로우하게 저수준에서 구체적으로, 키보드, 텍스트 아이템, 등등은 따로 처리해줄 필요가 있을때가 있다.

다중구현을 통하여 하나의 클래스에서 모든 이벤트를 처리해줄 수 있다.



1. 화면 - 이벤트처리 <-- 클래스가 분리되어있다. 다양한 화면이있을경우

장점 : 이벤트처리클래스를 다른 UI에서도 사용할 수 있다.

단점 : 따로 클래스를 가져와서 사용하기때문에 번거로울수있다.


2. 두가지를 한번에 한다

상속과 추상메소드를 동시에 UI에서 구현할수도있다.  <-- 화면이 간단한 경우


3. 내부클래스

아직 대기!!


AWT 이벤트 처리 절차!!

1. 이벤트 소스(타겟)결정

2. 처리 이벤트 결정

3. 이벤트 리스터(핸들러) 구현

4. 이벤트 소스에 이벤트 리스터 연결(등록)


오늘부터 화면 구현 실습 해보기 시작


어댑터 클래스 : 인터페이스의 구현되지않은 메소드들만 있는 클래스, 이런 클래스를 상속받아서 구현한다, 추상메소드가 1개만 있는것은 어댑터 클래스가 없다. 대표적으로 1개인것은 ActionEvent

 

다른 클래스에 컴포넌트를 보내주기위해 this를 보내준다.

서로 다른 클래스와 상호작용하기위해 this로 데이터를 보내준다.

생성자를 통해서 this로 객체를 가져와서 이벤트 클래스에서 처리해준다.

하지만 원래 클래스의 속성을 다른 클래스에서 조작하는것은 좋지않은 프로그래밍이다. (캡슐화)



system.exit(0); 을 바로 사용하면 나머지 그래픽 리소스들을 처리하지않고 프로그래밍 종료되기때문에

setVisible(fasle);

dispose();

를 호출해줘야한다.


- 내부 클래스를 이용한 이벤트 처리

내부클래스 에서는 자신을 포함하고 있는 외부클래스의 인스턴스 변수와 인스턴스 메소드에 대한 접근이 가능하다.

어댑터 클래스 상속을 통한 이벤트 처리의 단점(다중상속 불가)을 해결할 수 있다.

내부클래스를 이벤트 리스터로 사용할 수 있다.

다른 클래스에서 재사용이 가능하다. 위치적으로만 내부클래스로 존재하지만 다른 클래스에서 접근이 가능하다.


1(외부클래스구현)번과 2번(내부구현) 장점을 가진다.

java 2때 이벤트 리스너를 구현하기위해 내부클래스가 추가되었다. 이벤트 리스너이외에도 다양한곳에서 사용된다.


- 존재 방식에 따른 분류

맴버 내부 클래스 : 외부 클래스의 인스턴스 변수나 인스턴스메소드를 사용할 수 있다.

이름있는 지역 내부 클래스 : 메소드안에 클래스를 만들 수 있다. 지역 내부 클래스, 메소드 소멸과 동시에 사라진다. 하지만 외부에서 클래스 내부의 인스턴스 변수에 접근할 수 있다. 이벤트 처리는 특정 타이밍에만 존재하기때문에 사용한다.

이름없는 지역 내부 클래스 : 단 한번만 사용되고 말 경우에는 굳이 클래스의 이름을 저장할 필요가 없다.


다른 클래스에서 내부 클래스를 접근할때의 방식

ChatFrame.ExitHandler eventHandler = new ChatFrame().new ExitHandler();


이름 어뵤는 지역 내부 클래스는 외부에서 접근이 불가능하다.


---------- 오후 시작!!

이름없는 지역 맴버 클래스 구현

키보드, 마우스, 텍스트필드 등... 다양한 이벤트 처리


내부 클래스에는 다른 변수나 메서드처럼 static을 붙여줄 수 있다.

외부에서 바로 접근이 가능하다.


new XXX(). new YYY(); <- 일반적인 내부 클래스의 접근법

new XXX().YYY(); <- statc 내부 클래스의 접근법


- 복잡한 레이아웃 관리자, 배치관리자


배치관리자 - GridBagLayout 그리드를 기반으로 컴포넌트의 위치와 크기를 자유롭게 지정할 수 있는 장점이 있는 배치 관리자이다. 다양한 속성과 가장 복잡한 형태를 하고 있다.



예행연습 - 화면실습 구성만 해보기


프레임자체는 보더로 시작한다.

패널의 레이아웃을 그리드백으로 준다.



예행 연습 - 내일 계좌 관리 페이지 만들기










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

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

다양한 콜렉션의 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
,

오전 1교시는 상속 실습

7. 상속(8)

Shape -> Circle, lectangle 클래스만들어서 출력하기


- 다형성 (8.다형성과 객체 형변환.ppt)

자바에서는 다형성을 지원하기위해 클래스 형변환을 지원한다.

부모 자식 클래스간에서만 클래스 형변환이 가능하다.

배열로 다양한 객체를 관리할때 좋다.

하나의 배열(타입) 안에 다양한 자식클래스를 넣을수 있다.

up casting 의 제약사항 : 자신의 수퍼클래스만 접근이 가능하다. 밑으로는 접근이 불가하다.

오버라이딩된 변수나 메서드는 JVM에서 찾아서 호출한다.


down casting : 원하는 클래스를 가리키는 변수가 필요하다.

(자식클래스)부모클래스 형식으로 사용하여 새로운 변수를 지정한다.

자식클래스의 새롭게 추가된 맴버들을 접근하기위해 필요하다.


- instanceof 연산자

래퍼런스 변수 instanceof type(클래스명)


instansof 자식클래스를 비교할시에 부모클래스도 모두 true이다.


object클래스의 equals는 ==와 같다

주소값을 비교해서 같으면 true


String 클래스에서 equals로 오버라이딩된 메소드가 있다.

object 가 자동으로 String타입으로 형변환된다.


- equals

object 클래스의 메서브 euqlas은 ==와 같다

값이 아닌 주소를 비교한다. 


하지만 String의 equals는 object equals를 오버라이딩(재정의) 해서 사용한다


//위임형 비교

return toString().equals(obj.toString());

// 여기서 사용되는 equals는 String에서 오버라이딩된 equals이다.(내용비교)

// obj.toString() 은 현재 들어온 객체 타입이 account(obj의 값) 이기때문에 account에서 오버라이딩된 toString을 호출한다.


- 추상(Abstract)클래스

서브클래스들이 반드시 구현(재정의 : Overring)해야하는 메서드 선언을 위한"수직적 규약"을 위한 용도의 클래스, 수직적 규약이란 자식클래스에 대한 규약이다.


1개 이상의 추상 메서드를 가지는 클래스

클래스 명 앞에 abstract 라고 입력한다.


금요일 오전 필기 시험!!


- 인터페이스

인스턴스 생성 목적이 아니라 서로 다른 클래스간의 상호작용을 위한 "수평적 표준 규약(격)"을 위한 목적이다.


구현 클래스에서 "implements "인터페이스명" 으로 써준다.


타입선언은 가능하다(interface 명(형)으로) 선언할수있따.


자바에 다형성을 지원하는 기술 3가지

클래스 형변환

추상클래스

인터페이스







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

7월 3주차 1일 (3주)  (0) 2015.07.20
7월 2주차 4일 (2주)  (0) 2015.07.16
7월 2주차 2일 (2주)  (0) 2015.07.14
7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
Posted by moyaiori
,

클래스 4대 특징 시험문제!!


은닉화(캡슐화), 다형성, 추상화, 상속성


다형성이 제일 중요하다


ppt 9번까지 나간후에 이론시험칠 예정


- java.lang.String 클래스


배열의 특징 : 한번 생성하면 크기를 변경할 수 없다.


한번 생성된 인스턴스는 편집 개념이 아니라 새로운 내용을 추가한 새로운 메모리를 생성한다.


- java.lang.String 클래스의 주요 메서드

6. 표준 API의 기본클래스 활용.ppt (6)


boolean equals(Object anObject : 두 string 클래스 내용이 같은지를 비교한다.

boolean equalsIgnoreCase(Object anObject : String을 비교할때 대소문자를 비교하지않는다.

String substring(int beginIndex) : 지정 위치 뒤로 모두가져온다, 매게변수를 두개줄경우 시작과 끝을 지정해준다.

String concat(String str) : 주어진 문자열을 합친다. 보통 "+"를 쓴다.

String replace(char oldChar, char newChar) : 기존의 oldChar를 NewChar로 바꾼다. 값이 같으면 모두 바뀐다.

String toLowerCase() : 모든문자를 소문자로

String toUpperCase() : 모든문자를 대문자로

char charAt(int index) : index로 지정된 곳의 문가밧을 변환한다.

int indexOf(int ch) : 주어진 문자가 존재하는 위치를 알려주고 없으면 -1을 돌려준다.

주민등록번호 처리 연습 : 사용자가 입력을 잘못했을경우를 가정하여 "-" + 1 의 위치로 성별을 구분한다.

int lastIndexOf(int ch) : 주어진 문자가 존재하는 마지막위치를 알려준다.

String trim() : 문자열의 시작과 끝 사이에 있는 공백을 없앤다. 중간 공백이 아닌 앞뒤 공백만 지워준다.

static String valueOf(Object obj) : 주어진 객체나 기본 데이터형을 문자열로 형변환하여 반환한다.


- java.lang.StringBuffer 클래스

자체 편집이 가능한 "문자열" 처리와 관련도니 기능을 제공하는 클래스

명시적 생성만 된다.


StringBuffer append(String str) : str로 주어진 문자열을 스트링 버퍼의 맨 마지막에 추가한다. 자기 자신을 리턴한다. 체인기법을 사용할 수 있다.

StringBuffer inser(int offset, String str) : 지정된 위치에 문자열을 추가한다.

StringBuffer delete(int start, int end) : start ~ end-1의 문자를 지운다

StringBuffer replace(int start, int end, String str) : start ~ end -1 을 지우고 대신 문자열을 넣는다.

StringBuffer reverse() : 문자열의 순서를 뒤집는다.

CRUD 작업을 하기 쉽도록 API를 제공


- java.util.String.Tokenizer 클래스(11)

하나의 "문자열"을 여러개의 문자열로 분리한느데 사용할 수 있도록 제공된느 유틸리티 클래스

나누는 단위가 되는 문자열을 토큰이라고 한다.

토큰 분리자를 생략하면 공백, 지정하면 지정된 문자이다.


- 래퍼 (Wrapper : 포장)클래스

기본 데이터 타입을 객체로 포장하여 다양한 기능을 사용할 수 있도록 하는 래퍼클래스를 제공한다.

기본 8개 + String(비공식)


- java.lang.Boolean 클래스(14)

생성자 메게변수로 문자열도 받을수있다. 알아서 bool으로 변환

생성자 < - > "타입명"Value() : 클래스의 객체화와 기본형으로 바꿔서 상대적이다.

기본 타입과 객체 타입간의 형변환을 위해 존재(주로 사용하는 기능)


- java.lang.Math 클래스(21)

수학관련 상수와 클래스 메서드를 제공한다.


- java.util 패키지의 주요 클래스(24)

date는 페기처분된 메소드가 많아서 사용하지않는다

date()(생성자)는 자주사용한다 : 시스템 시간을 가져온다.

calender 클래스르 자주쓴다


- java.util.calendar 클래스(26)

클래스 생성시 동적인 정보를 가져올때는 팩토리 메소드를 활용한다.

다양한 상수를 통하여 값을 가져오거나 셋팅한다.


- java.util.Random 클래스(30)

math 클래스보다 더 다양한 랜덤값을 준다.

기준값을 줄수있다. (seed값)


- system클래스

JVM을 추상화 시켜놓은 클래스이다.



-- 오전끝


System.exit(0); : 프로그램 종료

System.gc(); : 가비지 콜렉터 호출, 실제론 의미가 별로없다

System.in.read(); : 키보드로 인풋을 받는다.

System.currentTimeMillis(); : 1970년도 부터 온시간은 밀리세컨드로 반환(long)

System.arrayCopy(); : 배열 복사


확장for문 알아보기


OS기능중 중요한거 : 하드웨어관리, 프로세스관리


- 7. 상속.ppt

사전에 정의되어있는 클래스의 속성이나 메서드를 새로 정의하고자 하는 클래스에서 그대로 내려 받아 속성이나 메서드르 재사용하는 객체지향의 대표적 기술이다.


재사용, 재정의, 추가(확장) -> 상속


정확한 의미로 클래스 상속이다.


부모 < - > 자식관계가 됫을때 "is a"관계가 된다고 한다.


부모클래스 or 슈퍼클래스(Super class)

자식클래스 or 서브클래스(Sub class)


상속이된 클래스를 생성시에 메모리는 자식클래스와 상속클래스가 동시에 할당된다.


자식클래스에는 없고 상속받은 속성이나 메소드가 있을경우 메모리에 할당된 부모클래스에서 찾아서 호출한다.


모든 클래스는 object클래스를 상속받는다.


- 자바에서 자동으로 생성되는것들

디폴트생성자, extends Object, 생성자 첫번째 줄에 super(); 붙여준다 (자동으로 부모클래스의 디폴트 생성자를 호출한다)


- 재정의 (overriding)

재정의는 변수, 메서드 모두 해당한다.

보통 메서드에 많이 쓴다.

메서드 재정의시 구현부만 달라진다.


toString은 object 클래스(최상위클래스) 의 메소드이다

오버라이딩을 할 수 있다.


- 상속 제약 사항

다중상속을 지원하지않는다.

부모클래스의 private는 상속되지않는다.

생성자는 상속되지 않는다.

super : 슈퍼클래스의 인스턴스를 가리키는 참조(래퍼런스) 변수

super() : 슈퍼클래스의 생성자 호출


명시적으로 생성하지않을경우 디폴트 생성자가 추가된다.

생성자를 만들시에 디폴트 생성자를 꼭 만들어야하는 이유중에 하나


- 오버라이딩 규칙(7)

기본적으로 메서드 선언부가 동일해야된다.

접근제한자는 같거나 더 넓어야한다.













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

7월 2주차 4일 (2주)  (0) 2015.07.16
7월 2주차 3일 (2주)  (0) 2015.07.15
7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
7월 1주차 4일 (1주)  (0) 2015.07.09
Posted by moyaiori
,

졸업논문으로 인해 결석


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

7월 2주차 3일 (2주)  (0) 2015.07.15
7월 2주차 2일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
7월 1주차 4일 (1주)  (0) 2015.07.09
7월 1주차 3일 (1주)  (0) 2015.07.08
Posted by moyaiori
,

2. 클래스 구성 요소

- 변수 기타 제한자 static(17)

클래스(static) 변수라고 한다.

C에서 전역변수 개념과 비슷하다.

인스턴스 변수는 각 객체마다 공유의 개념이 아니고 각각의 데이터이지만

클래스 변수는 어떠한 객체를 생성하든 공유된다.


-JVM 메모리 관리 모델

[         static영역          ][stack영역][                     haep영역                    ]


heap > static > stack 순으로 크다


1. 클래스를 선언하는순간 static영역 메모리에 로드가된다.

2. 변수가 스택영역에 할당된다.

3. new 하는순간 static에 선언된 클래스가 heap에 로드된다.


클래스 자체가 로드되는곳(클래스로더, static영역)

스텍 영역은 지역변수가 로드되는 영역이다.

힙 영역은 인스턴스가 할당되는 영역이다.


스택은 지역변수만 넣기때문에 작다.


클래스 변수는 static 영역에 로드된다.

기존의 인스턴스 변수는 heap영역에 로드된다.

heap영역에는 클래스변수가 로드되지 않는다. 오직 static 에만 로드된다.


할당될떄 "클래스이름.클래스변수" 로 할당된다.

다른 모든 인스턴스들과 공유되는 변수, 메소드 이다.



- math 클래스는 100% static 메소드로 되어있다.


- 상수 처리의 일반적인 구조

public final static int value = 10;

변수명은 대문자로 써준다. 일반적으로


- 패키지 생성 방법(시험문제)

javac -d . SomeClass.java

javac 디렉토리생성 명령어 좌표 파일명

패키지명은 소문자 클래스 명의 시작은 대문자로 쓴다. 구분하기 위해


- 서로 다른 package의 클래스를 사용하기 위해 import를 쓴다.

실제 패키지명은 패키지 + 클래스명 으로 구성된다.(컴파일러 단에서)


실행시 반드시 패키지명을 포함시켜야한다.


- 4. 메소드 오버로딩

동일한 이름으로 사용가능 <-- 장점

조건 : 매게변수의 개수나 데이터유형이 서로 달라야한다.

리턴타입은 오버로딩과 관계없다. 

오로지 매개변수 타입과 갯수에만 관계가있다.


- 5. 배열.ppt

동일한 타입이 다수 들어간것

배열 자체를 메소드로 취급한다.


배열을 하나의 클래스처럼 취급한다.


한방에 선언, 생성, 초기화할때

int[] array = new int[]{0,~~}

사이즈 크기를 주지않는다.


자바는 정방향 배열이 아니다.

참조의 참조 객체로 사용한다.

C와 내부적인 구조가 다르다.


2차원 배열을 for문으로 돌릴때

for (int i = 0; i < array3.length ; i++){

for (int j = 0; j < array3[i].length ; j++){


array3[i].lenght 은 [i]가 가지고있는 배열의 크기



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



자바 배열 퀴즈

순서가 엉망인 1~10까지 배열을 가지고

순서대로 만들기


버블정렬로 구현하기


메소드에 래퍼런스를 넘길경우 굳이 그 메소드에서

리턴으로 값울 다시 가져올필요가없다

왜냐하면 래퍼런스로 메소드나 호출하는 부분에서도 래퍼런스가 가리키는

데이터의 위치는 같기때문이다.


- 참조 데이터 타입을 배열로 처리할 수 있다.

5, 배열(3)






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

7월 2주차 2일 (2주)  (0) 2015.07.14
7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 4일 (1주)  (0) 2015.07.09
7월 1주차 3일 (1주)  (0) 2015.07.08
7월 1주 2일차 (1주)  (0) 2015.07.07
Posted by moyaiori
,

- 클래스 만들기

기본 타입과 참조 데이터 타입의 비교


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        // 기본타입 변수선언
        int a;
        a = 100;
        
        // 참조 데이터 타입 변수 선언 
        Payslip payslip;    // 4바이트 할당
        // 클래스로부터 인스턴스 생성(메모리 로드)
        payslip = new Payslip();
    //      1   3       2
    // 실행순서
    // 2번에서 하드디스크에서 클래스를 복사해온다.
    // 하지만 메모리가 더 크다.
    // 그래서 바로 복사해오지않고 주소를 넣어준다.(래퍼런스, 2번동작)
    // 1번에 2번의 주소값(래퍼런스)를 3번 동작으로 할당한다.
    // 래퍼런스 데이터타입의 값을 접근할때 "."으로 접근한다. (~~의)
 
//---------------------------------------------------------------
    // 인스턴스 변수 사용
    // 지역변수와 다르게 인스턴스 변수는 JVM에서 자동 할당(초기화)이된다.
    // 지역변수일 경우 초기화하지않고 사용할경우 컴파일 애러가 나온다.
cs


- 클래스 생성 및 구현

workspace -> OOP -> Payslip, PayslipApp, PayslipApp2


- 객체지향분석설계 해보기(acount class)

starUML툴을 활용하여

디자인모델 만들어보기 


- Account 클래스

디자인모델 설계부터 직접 코딩해보기까지


OOP -> Account, AccountExample


- 2. 클래스 구성요소.ppt


- 생성자(3)

객체 생성을 위한 창구(연결통로)

반환형자체가 없다.(void 조차 없다. 리턴타입을 명시하지 않는다.)

생성자 이름은 무조건 클래스이름과 동일해야한다.

생성자는 직접 호출할 수 없고 반드지 new 키워드와 함께 호출하여야 한다.

생성자를 작성하지않은 경우 컴파일러에서 디폴트 생성자가 자동 정의된다.

생성자를 만들때는 디폴트생성자와 인스턴스 변수 갯수와 매개변수가 같은 생성자를 만들어줘야한다.

디폴트 생성자는 어떤 생성자도 명시하지않았을때 컴파일러에서 생성한다.

목적 : 인스턴스 변수의 초기화


- 예약어 this(7)

현재 실행중인(생성되어 있는) 인스턴스를 참조하는데 사용한다.

생성된 래퍼런스 자신을 가르키는 주소값이 담겨있는 변수

매게변수로 인스턴스 변수와 이름이 같을경우 구분을 위하여 "this."를 붙여준다.

자기 자신의 또다른 생성자를 호출할때 사용한다. (this(변수1, 변수2, 변수3))

this는 생성자 안에서 생성자의 첫 줄에서 단 한번밖에 사용할 수 없다.


- 접근 제한자(11)

public은 다른 패키지의 어떤 클래스에서도 이 클래스를 접근(객체생성)을 할 수 있다.

클래스 -> public

속성(인스턴스변수) -> private

메소드 -> public


- getter, setter 생성

인스턴스 변수를 직접 접근하지 못하도록 만들어지기때문에

접근할수있는 방법을 메소드를 만들어야한다.


get, set을 만들어서 쓴다.

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

7월 2주차 1일 (2주)  (0) 2015.07.14
7월 1주차 5일 (1주)  (0) 2015.07.10
7월 1주차 3일 (1주)  (0) 2015.07.08
7월 1주 2일차 (1주)  (0) 2015.07.07
7월 1주 1일차 (1주)  (0) 2015.07.06
Posted by moyaiori
,