Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

정모/2017.8.9: Difference between revisions

From ZeroWiki
({CREATE})
 
No edit summary
 
(3 intermediate revisions by one other user not shown)
Line 2: Line 2:
* '''방학정모는 17시 00분부터 이루어집니다. '''
* '''방학정모는 17시 00분부터 이루어집니다. '''
* [[OMS]] : [[김선재]]  
* [[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&lt;T&gt; action)
** <내부 반복자 사용>
*** 외부반복자는 개발자코드에서 직접 컬렉션을 조회(get index)해서 처리
*** 내부반복자는 컬렉션에 처리코드만을 전달한 뒤 내부에서 알아서 요소별로 처리
** <병렬 처리가 쉽다.>
*** 한가지 작업을 여러 서브 작업으로 나눔
*** 각각의 스레드가 여러 서브 작업을 처리
*** 그 뒤에 처리를 취합 후 최종 결과를 도출
** <중간 처리와 최종 처리를 할 수 있다.>
*** 컬렉션, 배열의 스트림에서 중간 처리와 최종 처리를 할 수 있다.
*** 중간 처리는 필터링 처리 스트림과 매핑 처리 스트림이 있다.
*** 필터링 처리 스트림은 오리지널 스트림에서 특정 조건을 충족하는 객체만을 분류한다.
*** 매핑 처리 스트림은 객체를 다른 속성의 객체로 변환시킨다.
*** 최종 처리는 집계를 처리할 때 주로 쓰인다. (반복, 카운팅, 평균, 총합 등)
** 참고 도서
** 이것이 자바다 / 신용권 지음 / 한빛 미디어
* 진행 사항 공유
* 진행 사항 공유
* '''장소 : 310관 731호  '''
* '''장소 : 310관 731호  '''
** 스터디 및 프로젝트 - [[활동지도/2017]]
** 스터디 및 프로젝트 - [[활동지도/2017]]
* MT 계획 4 - 회장이 따로 올려놓겠음
* MT 계획 4 - 회장이 따로 올려놓겠음
= 진행 =
* 참여 : [[박인서]], [[김선재]], [[한재민]]
* OMS : 김선재 - Java 8과 OOP
** 다음 OMS 주자  - [[유재범]] 학우의 Unreal Engine 맛보기
* 스터디
** [[킹갓제네럴엠페러무근's머신러닝]] - 딥러닝 + 갓소마의 데이터 처리
** [[MFC++]], [[LaLaLand]] - 퍼엉...
** [[R아봅시다]] - 아직 인원 뽑아요
* 프로젝트
** New! <script=JaSal.js> - 웹 페이지 만들겁니다. 신규 인원 모집중
* KAKAO Code Festival - Festival 답게 폭죽을 쏴서 퍼엉!



Latest revision as of 15:33, 9 August 2017

예정

  • 방학정모는 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 - 회장이 따로 올려놓겠음

진행