즐겁게!! 자신있게!! 살아보세!!

재밌는 인생을 위하여! 영촤!

Language_Study 40

[JAVA, App] 17.자바GUI

Java GUI 1.awt 운영체제의 자원을 이용해서 GUI 프로그래밍 운영체제 별로 다르게 출력될 수 있습니다. 운영체제에 종속적이라고 느리고 무겁습니다. 2.swing jvm 자원을 이용해서 GUI 프로그래밍 운영체제에 독립적이고 속도가 awt 보다는 빠릅니다. swing 의 대부분의 클래스는 awt로부터 상속받았습니다. 3.javaFX 가볍고 풍부한 UI 제공 레이아웃, 스타일, 애플리케이션 로직의 분리: MVC 구현 html 이나 css 도 사용이 가능 swing으로 만들어져 있는 많은 애플리케이션들이 javaFX로 변환되고 있는 중 4.awt 와 swing의 이벤트 처리 방식이 안드로이드 이벤트 처리 방식 awt 와 swing은 이벤트 처리 클래스가 별도의 클래스로 존재하는데 안드로이드에서는 뷰..

Language_Study/JAVA 2020.12.27

[JAVA, App] 16.이벤트처리

Event 처리 Event는 외부에서 발생하는 사건 자바의 awt 나 swing의 이벤트 처리는 Listener 인터페이스나 Adapter 클래스가 처리합니다. 1.이벤트 처리 방법 처리하고자 하는 이벤트의 Listener 인터페이스를 implements 하거나 Adapter 클래스를 상속받은 클래스의 인스턴스를 생성 컴포넌트.add이벤트리스너(앞에서 생성한 인스턴스); 이러한 방식의 처리를 Delegate(위임) 를 처리 방식 이벤트가 발생한 객체가 이벤트를 처리하는 것이 아니고 이벤트가 발생한 객체가 다른 객체에게 이벤트 처리를 위임하는 방식 컴포넌트는 출력에만 집중하고 다른 작업은 별도의 객체가 처리하는 것이 유지보수에 유리 이벤트 처리하는 메소드를 확인 이 메소드의 매개변수를 이용하면 이벤트가 발..

Language_Study/JAVA 2020.12.27

[JAVA, App] 15.MutualExclusion

Mutual Exclusion 하나의 스레드가 수정 중인 공유자원을 사용이 끝나기 전에 다른 스레드가 수정하면 안된다. 1.volatile 변수 앞에 붙이는 예약어로 변수가 연산에 사용될 때 원자성을 보장 원자성: 작업이 완전히 끝나기 전에는 다른 작업이 끼어들 수 없다. 32bit 시스템에서 64bit 자료형인 long, double 을 멀티 스레드 환경에서 사용하다 보면 작업이 완료되기 전에 다른 스레드에서 사용해서 잘못된 결과를 사용할 수 있습니다. 이 경우에 volatile을 붙여주면 위와 같은 상황이 발생하지 않습니다. 2.synchronized 메소드 메소드 결과형 앞에 synchronized를 붙이면 메소드를 동기화해서 실행 이 메소드가 완료되기 전에는 다른 스레드가 수행될 수 없도록 합니다..

Language_Study/JAVA 2020.12.27

[JAVA, App] 14.기본API클래스

Properties Key 와 Value를 쌍으로 저장하는 자료구조 Map 은 모든 자료형을 사용할 수 있지만 Properties는 Key 와 Value 모두 String 만 가능 자료형이 결정되어 있어서 앞에 나온 자료구조 들과 다르게 Generics을 이용하지 않습니다. 환경설정을 xml 이나 텍스트 파일에 작성해두고 그 내용을 읽어서 프로그램에 적용하고자 하는 용도로 많이 사용 Spring 같은 프레임워크에서는 메시지 출력 등에 이용됩니다. 1.주요 메소드 String setProperty(String key, String value): 프로퍼티 저장 String getProperty(String key): key에 해당하는 프로퍼티를 가져옵니다. void store(OutputStream stre..

Language_Study/JAVA 2020.12.27

[JAVA, App] 13.Framework

List 데이터를 순서대로 저장하는 자료구조 자료구조에서는 배열을 Dense List 라고 하기도 합니다. 1.ArrayList(Vector 는 ArrayList의 Legacy 버전) 데이터를 물리적으로 연속해서 저장하는 List 크기 변경이 가능 제너릭이 구현(인스턴스를 만들 때 데이터 1개의 자료형을 확정을 해야 합니다.) 인스턴스를 만들 때 자료형을 확정하지 않으면 경고가 발생하고 데이터를 가져올 때 Object 타입으로 리턴되서 사용을 하고자 하면 강제 형 변환을 해야 합니다. Linked List 에 비해서 메모리 낭비가 적고 접근 속도가 빠릅니다. Linked List 에 비해서 데이터를 중간에 삽입하거나 삭제하는 경우 속도가 느립니다. Linked List는 논리적으로 연속해서 데이터를 저장..

Language_Study/JAVA 2020.12.25

[JAVA, App] 12.Interface

인터페이스 사용 1.인터페이스 final 상수와 추상 메소드 만을 가진 개체 최근에는 default method(구현된 메소드)를 소유 가능 다른 클래스에 implements 해서 사용, 다른 인터페이스에 extends 가능 2.사용 목적 다형성 구현을 위해서 템플릿 메소드 패턴을 구현하기 위해서 인터페이스에 메소드의 모형을 만들고 클래스서 구현하는 방식 클래스가 인터페이스를 implements 했다면 클래스에는 인터페이스의 메소드가 구현되어 있다는 보장을 할 수 있습니다. 추상메소드는 상속받은 곳에서 반드시 재정의 해야 합니다. 인터페이스를 다른 말로 부를 때 protocol 이라고도 합니다. 자료구조(Data Structure) 0개 이상의 데이터를 저장하는 방법 예전에는 각 자료구조의 특징을 숙지하..

Language_Study/JAVA 2020.12.25

[JAVA, App] 11.Package

java.lang 패키지 자바의 기본 패키지 이 패키지는 import 하지 않아도 패키지 이름을 생략 가능 1.Object 클래스 자바의 최상위 클래스 자바의 모든 클래스는 Object 클래스로부터 상속됨 이 클래스의 모든 속성이나 메소드는 다른 모든 클래스에서 사용 가능 이 클래스는 자바의 모든 클래스의 공통된 내용을 가지기 위해서 만들어진 클래스라서 인스턴스 생성은 하지 않습니다. Object clone(): 복제를 위한 메소드인데 재정의 해서 사용 boolean equals(Object obj): 인스턴스의 내용을 비교하기 위한 메소드로 재정의해서 사용 == : 참조형의 경우 참조가 같은지 비교 equals: 참조형에서 내부 데이터가 같은지 비교 int hashCode(): 인스턴스의 해시코드(참조..

Language_Study/JAVA 2020.12.25

[JAVA, App] 10.예외처리

예외처리 1.에러 1) 물리적 오류(컴파일 오류): 문법적으로 맞지 않는 문장을 만들어서 컴파일이나 실행이 되지 않는 현상 이클립스에서는 빨간색 에러를 표시해줍니다. 반드시 수정을 해서 실행을 시켜야 합니다. 2) 논리적 오류: 문법적으로는 잘못된 것이 없어서 실행이 되는데 실행 결과가 이상하게 나오는 현상 에러가 아니기 때문에 코드 상에는 찾기가 어렵고 메모리 값을 확인하기 위한 디버깅을 수행해서 오류를 수정 3) 예외(Exception): 문법적으로는 오류가 없어서 실행은 되지만 실행 중 특수한 상황이 발생하면 에러가 발생하는 현상 예외처리를 이용해서 잘못된 부분이 있으면 수정을 하고 그렇지 않으면 예외를 기록해서 프로그램을 종료하게 하거나 정상적으로 동작하도록 해주어야 합니다. 4) 단언(Asser..

Language_Study/JAVA 2020.12.25

[JAVA, App] 9.추상메소드

패키지 이름이나 클래스 이름을 변경하고자 할 때 직접 클릭해서 변경하는 것은 권장하지 않습니다. IDE에는 대부분 리팩토링 기능을 제공하는데 리팩토링 기능을 이용해서 변경을 하면 동일한 이름으로 만들어진 모든 것을 전부 변경해줍니다. Eclipse에서는 변경하고자 하는 패키지 이름이나 클래스 이름을 선택하고 마우스 오른쪽 클릭하고 [Refactor] - [Rename]을 선택하고 변경하고자 하는 이름을 입력 abstract(추상) 1) 추상 메소드 내용이 없는 메소드 다형성 구현을 위해서 하위 클래스에 오버라이딩 구현을 위해서 만든 메소드 Starcraft 라는 클래스의 attack 이라는 메소드는 없어도 실행상에는 아무런 문제가 없었지만 상위 클래스 자료형으로 만들어진 변수에 하위 클래스 자료형의 인스..

Language_Study/JAVA 2020.12.23

[JAVA, App] 8.상속

만들어진 클래스 이용 1.내가 원하는 기능을 가진 클래스를 찾기 2.내개 원하는 기능을 수행해주는 메소드를 찾기 static 인지 아닌지 확인: static 이라면 인스턴스를 생성할 필요가 없음 static이 아니라면 인스턴스를 생성해야 하므로 생성자를 다시 확인 메소드의 매개변수를 확인 매개변수는 메소드에게 일을 시킬 때 메소드가 사용할 데이터입니다. 필요한 데이터를 제공하지 않으면 메소드는 일을 하지 않거나 에러를 발생 return type을 확인 작업을 수행하고 어떤 결과를 돌려주는지 확인 package & import 1.package 관련있는 클래스의 모임 파일 시스템에서는 하나의 디렉토리 package가 배포 단위 클래스는 실행은 가능하지만 배포를 할 수 없습니다. 자바에서는 클래스들을 다른 ..

Language_Study/JAVA 2020.12.23