2020. 10. 15. 10:30ㆍ교육과정/KOSMO
키워드 : 복습(함수, 다형성, 추상, final, static) / modifier / 클래스와 인터페이스 / has-a 포함관계 / is-a 상속관계 / 콜렉션(collection) (List, Set, Map) / GUI (FlowLayout, GridLayout, BorderLayout) / awt / swing / 실습-계산기만들기
****
1. 개념정리 - 함수
※ 메소드(method) : 역할별로 작업 분산
: 반복되는 작업
- 하나의 main() 메소드 내에서 모든 작업 코드가 다 있으면 소스가 복잡하고 읽기도 어렵다.
따라서, 역할별로 작업을 나누어 코드를 쉽게 찾을 수 있다.
- 반복작업이 연속으로 일어나는 일이 아니라 A→E, B→E, C→E, D→E 방식이라면 for반복문과 같은 방식이 아니라,
E라는 메소드를 호출하는 방식을 사용해야 한다.
(반복작업이연속으로 일어나더라도 코드가 너무 길면 메소드로 만드는 것이 더 가독율이 좋다.)
- 메소드 호출 시 데이터를 전달하기 위해 인자를 보내서 메소드에서 파라미터로 받게 하면 된다.
- 메소드로부터 결과 데이터 1개를 받기 위해서는 return으로 보내고, base함수에서 새로운 변수로 받아주면 된다.
2. 복습 - 다형성
※ 다형성(polymorphism) : 표준화(명령문을 통일)하기 위해서 사용한다.
3. 복습 - abstract (추상, 미완성)
※ abstract : 오버라이딩에 강제성을 주기 위해 사용한다.
미완성되어 객체 생성이 불가능하나, 자녀 클래스에서 오버라이딩하여 완성시킬 수 있다.
미완성 → 오버라이딩 → 표준화로 다형성을 갖기 위함
4. 복습 - final
※ final : 데이터 변경이 불가능하다.
5. 복습 - static
※ static : static 메모리 영역에 띄워지며, 단 1번만 등록되면 모두 공동으로 사용하게 된다. (공유)
static은 객체 생성보다 먼저 메모리에 올라가기 때문에,
객체를 생성하지 않고도 클래스 이름을 사용하여 Book.count처럼 사용할 수 있다.
(객체명(변수명)이 아닌 클래스명으로 접근 가능)
(5-1) static 변수가 아닌 경우
(5-1) static 변수인 경우
※ static 변수일 때, 객체를 생성하지 않고도 클래스 이름을 사용한 예
6. modifier (제어자)
___1___class A {
___2___int A;
___3___A ( ) { }
___4___void A ( ) { }
}
(1) 클래스 앞에 붙일 수 있는 modifier :
public (다른 클래스가 접근할 수 있다) / abstract(부모역할을 하게 만든다) / final (변경할 수 없게 만든다)
(2) 변수 앞에 붙일 수 있는 modifier :
private / protected / public / static / final
(3) 생성자 함수 앞에 붙일 수 있는 modifier :
private / protected / public
(4) 일반 메소드 앞에 붙일 수 있는 modifier :
private / protected / public / static / final (오버라이딩을 못하도록) / abstract (오버라이딩 강제성을 주기 위해)
7. 클래스(class)와 인터페이스(interface)
class A {
int A ;
A ( ) { }
void A ( ) { } ←( )에 아무것도 없더라도 { }로 함수를 구현해야 한다.
}
interface B {
int B ; ← [public abstract final] int B ; 로 자동으로 추상이 된다.
final이므로 변수값도 고정된다.
(참고 : static final은 상수라고도 부른다.)
void B ( ) ; ← [public abstract] void B ( ) ; 로 자동으로 추상이 된다.
}
▶ 인터페이스는 완벽한 다형성, 상속관계를 위해 사용한다.
▶ 클래스 상속은 extends로, 인터페이스 상속은 implements로 한다.
8. has-a 포함관계와 is-a 상속관계
(8-1) has-a 포함관계
(8-2) is-a 상속관계
9. 콜렉션 (collection) - List
: 자료 구조 관련 클래스 모음
- List : 크기를 자동으로 늘려주는 동적 배열 / 순서가 있음 / 데이터 중복 가능
- Set : 순서가 없음 / 데이터 중복 불가능
- Map : 데이터 쌍으로 저장
(9-1) 갯수를 알지 못하는 데이터를 배열에 저장하고자 할 때 ArrayList를 사용할 수 있다.
※ 향상된 for문
(9-2)
※ 참고 : ArrayList에서 요소(element)를 한 번만 사용하고자 할 때
▶ Iterator 사용
hasNext() : 다음 원소가 남아있으면 true를 반환하는 메소드
10. 콜렉션 (collection) - Set
- Set : 순서가 없음 / 데이터 중복 불가능
※ HashSet을 사용하여 중복수가 없는 로또 만들기
※ 참고
TreeSet : 배열 내 데이터를 자동으로 정렬시키며 저장한다.
>>> 저장 및 검색 경로 도식화
11. 콜렉션 (collection) - Map
- Map : 데이터 쌍으로 저장
12. GUI - FlowLayout
※GUI (UI) = 화면
- awt : JDK 1.2 이전
- Swing : JDK 1.2 이후
>> awt와 Swing을 혼용할 수 없다.
* Layout : 화면을 구성하는 방식
1) FlowLayout : 윗줄 상단 배치 -> 화면 크기가 고정이 되어 컴포넌트 크기 고정
2) GridLayout : 행열과 맞추어 배치 -> 화면 크기에 따라 컴포넌트 크기 변경
3) BorderLayout : 중앙, 북, 남, 동, 서 영역에 배치 -> 화면 크기에 따라 컴포넌트 크기 변경
* Component : 화면을 구성하는 요소
* Container : 화면 요소를 붙이는 것
ex) Frame, Panel, 등등
13. GUI - GridLayout
14. GUI - BorderLayout
15. GUI - Swing
16. GUI 실습
17. 실습 - 계산기 만들기