Day14

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. 실습 - 계산기 만들기

 

 

반응형

'교육과정 > KOSMO' 카테고리의 다른 글

Day16  (0) 2020.10.19
Day15  (0) 2020.10.16
Day13  (0) 2020.10.14
Day12  (0) 2020.10.13
Day11  (0) 2020.10.12