U E D R , A S I H C RSS

정모/2017.8.9

예정

  • 방학정모는 17시 00분부터 이루어집니다.
  • OMS : 김선재
    • 자바란?
      • 1990년대에 '썬 마이크로시스템즈' 라는 회사에서 가전제품에 쓸 프로그래밍 언어를 만듦. 자바의 시초가 됨.
      • 1990년대 말에 인터넷 보급이 확산되면서 자바가 웹 서버로 부상함.
      • 현재는 엔터프라이즈단에서 스프링 프레임워크를 제일 많이 쓰이고, 안드로이드 플랫폼에서 자바 언어를 사용하고, 데스크톱 전용 개발로 JavaFX를 사용하고 있다.
      • 객체지향 프로그래밍으로 여러 부품들을 만들어 서로 연결하며 하나의 물건(프로그램)을 만듦. 부품 대체도 쉬움
    • 자바8 새기능
      • 람다식
      • 함수적 인터페이스
      • 스트림
    • OOP
      • 예를 들어, 자동차(객체)를 만들고 싶음.
        • 보통 자동차(추상클래스)가 가지고 있는 것(필드, 속성) : 창문(객체), 와이퍼(객체), 색, 모델명 등
        • 보통 자동차(추상클래스)가 해야 하는 것(메소드, 동작) : 굴러가기, 와이퍼 움직이기 등
        • 자동차의 공통 사용방법(인터페이스) : 핸들조작법, 와이퍼사용법, 창문여는법
        • 자동차의 공통 사용방법(인터페이스) : 어느 자동차라도 동일, 내부 구조들 알 필요 없다.
      • 마티즈를 만들어보자.
        • 상속 : 위에서 만든 '자동차'의 특성들을 그대로 몰려받음.
        • 메소드 재정의 : 위에서 만든 '자동차'의 행동들을 '마티즈'식으로 바꿈
      • 타이어를 갈아보자. 1 (다형성)
        • 자동차는 그냥 어떤 타이어든 사용해도 됨.
        • 타이어의 특성을 몰려받아 한국 타이어 객체, 금호 타이어 객체 등으로 만들 수 있음.
      • 클래스 : 설계도, 인스턴스 : 클래스(설계도)로부터 나온 객체
      • 같은 마티즈라도 색(속성)들이 다를 수 있음.
      • 타이어를 갈아보자. 2 (다형성)
        • 타이어에 규격(인터페이스)이 있음
        • 다른 타이어 객체는 그 규격을 따르기(구현)만 하면 됨.
        • 자동차는 어떤 타이어 객체든 사용방법(인터페이스 메소드)은 동일하기 때문에 굳이 어떤 타이어인지 알 필요 없이 바로 사용 가능
        • 이 과정을 자동 타입 변환 이라고 함.
      • 타이어 객체(부모)를 다시 한국이나 금호 타이어 객체(자식)로! : 강제 타입 변환이라 하며, 명시적으로 자식클래스를 타입변환해야한다/
        • 조건은, 자동 타입 변환인 상태여야 한다. : 자식클래스 변수 = (자식클래스) 부모클래스타입;
        • 객체타입확인 연산자 : instanceof
    • 람다식
      • 주로 함수형 프로그래밍에서 사용. 병렬 처리가 쉽고 이벤트 지향적이다.
      • 자바에서는 익명 구현 객체를 손쉽게 만들 수 있게 해준다.
      • Runnable runnable = () -> { ... }; 가능
      • (타입 매개변수, ...) -> { 실행문; ...; (return ~;) } 형식
    • 함수적 인터페이스
      • 람다식의 타겟 타입은 하나의 추상메소드만을 가진 인터페이스
      • @FunctionalInterface 어노테이션을 인터페이스 선언 위에 붙이면, 컴파일 시 컴파일러가 함수적 인터페이스의 조건(하나의 추상메소드만을 가짐)을 체크해준다. 만약에 조건에 맞지 않는다면, 컴파일 오류를 발생시킨다.
      • 표준 API의 함수적 인터페이스
        • java.util.function 패키지에 있음
        • 메소드 또는 생성자의 매개 타입으로 람다식으로 '함수'를 전달
        • 종류
          • Consumer
            • 매개값 : O
            • 리턴값 : X
            • 추상메소드 : accept()
          • Supplier
            • 매개값 : X
            • 리턴값 : O
            • 추상메소드 : get()
          • Function
            • 매개값 : O
            • 리턴값 : O
            • 매핑 용도, 타입 변환
            • 추상메소드 : apply()
          • Operator
            • 매개값 : O
            • 리턴값 : O
            • 매개값을 연산
            • 추상메소드 : apply()
          • Predicate
            • 매개값 : O
            • 리턴값 : O
            • 매개값을 조사
            • 추상메소드 : test()
    • 스트림
      • 저장 요소를 하나씩 참조해서 람다식으로 처리
      • 컬렉션 또는 배열에서 요소를 하나하나 처리하려면, 기존 방식은 컬렉션,배열에 iterator 을 뽑아 하나씩 하나씩 hasNext() while 문으로 했다.
      • 스트림은 컬렉션,배열에서 스트림을 가져와 람다식으로 쉽게 처리코드를 쓸 수 있다.
      • 스트림의 특징
        • 람다식으로 요소 처리 코드 제공
        • 내부 반복자 사용
        • 병렬 처리가 쉽다.
        • 중간 처리와 최종 처리를 할 수 있다.
      • <람다식으로 요소 처리 코드 제공>
        • 함수적 인터페이스 활용
        • void forEach(Consumer<T> action)
      • <내부 반복자 사용>
        • 외부반복자는 개발자코드에서 직접 컬렉션을 조회(get index)해서 처리
        • 내부반복자는 컬렉션에 처리코드만을 전달한 뒤 내부에서 알아서 요소별로 처리
      • <병렬 처리가 쉽다.>
        • 한가지 작업을 여러 서브 작업으로 나눔
        • 각각의 스레드가 여러 서브 작업을 처리
        • 그 뒤에 처리를 취합 후 최종 결과를 도출
      • <중간 처리와 최종 처리를 할 수 있다.>
        • 컬렉션, 배열의 스트림에서 중간 처리와 최종 처리를 할 수 있다.
        • 중간 처리는 필터링 처리 스트림과 매핑 처리 스트림이 있다.
          • 필터링 처리 스트림은 오리지널 스트림에서 특정 조건을 충족하는 객체만을 분류한다.
          • 매핑 처리 스트림은 객체를 다른 속성의 객체로 변환시킨다.
        • 최종 처리는 집계를 처리할 때 주로 쓰인다. (반복, 카운팅, 평균, 총합 등)
    • 참고 도서
      • 이것이 자바다 / 신용권 지음 / 한빛 미디어
  • 진행 사항 공유
  • 장소 : 310관 731호
  • MT 계획 4 - 회장이 따로 올려놓겠음

진행

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2017-08-09 15:33:27
Processing time 0.5028 sec