Archive 114

자바 함수형 인터페이스와 람다식 1편 : 기본 개념과 사용법

Java 8 에서 새롭게 선보인 람다식. 이 람다식에 대해 알아보기 전에 꼭 알아야 할 개념이 있다. futional interface라는 것이다. 이 함수형 인터페이스란 이름에 겁먹지 말자. 함수형 인터페이스란 추상메소드를 단 하나만 가지는 인터페이스를 지칭하는 말이다. 당장 생각나는 인터페이스중에는 Runnable 인터페이스가 있지만, 임의로 함수형 인터페이스를 하나 생성해서 예시로 들어보겠다. interface FInterface { public void aaa(); } 위에서 처럼 FInterface라는 이름의 인터페이스를 하나 생성했다. 그리고 이 인터페이스는 aaa라는 이름의 매개변수가 없고 리턴타입이 void인 추상메소드를 하나 가지고 있다. 이게 함수형 인터페이스이다. 추가로 인터페이스가 ..

Archive/Java 2017.05.30

전반적인 WEB Application 에 대해서

전반적인 WEB Application에 대해서 정리해 보았다. 정리 순서는 다음과 같다. 1. WEB Application의 정의 2. WEB Application 아키텍처 3. 프레젠테이션 계층 4. 비즈니스로직 계층 5. 데이터액세스 계층 6. WEB Application이 가지는 문제 하나씩 자세히 살펴보자. 1. WEB Application의 정의 웹 애플리케이션이란 "복수의 사용자가 인터넷을 통해 데이터베이스에 접근하고 안전하게 정보를 읽고 쓸 수 있게 만들어진, 웹 브라우저와 RDB(관계형 데이터베이스)를 이용한 애플리케이션"을 말한다. 정적인 컨텐츠는 클라이언트 머신의 웹 브라우저가 네트워크에 있는 웹 서버로부터 요청한 HTML을 읽어와 표시한다. 동적인 컨텐츠는 웹 서버에서 애플리케이션 서..

Archive 2017.05.29

스크래치를 시작하기 전에 컴퓨팅적 사고가 무엇인지부터

2018년도부터 소프트웨어 교육이 의무교육화가 되어 내년부터 교과서 개발에 착수한다라는 인터넷 기사를 접했다. 교육 대상은 초등학교와 중학교다. 초등학생은 2017년부터 의무적으로 소프트웨어 교육을 받게 되며, 중학교의 경우 내년부터 시행 될 자유학기제를 통해 소프트웨어 분야 진로 교육이 강화 된다고 한다. 나는 컴퓨터를 접한 시기는 빨랐지만 전문적으로 프로그래밍을 접하게 된 것은 고등학교를 졸업한 이후였다. 남들보다 늦었다는 생각에 아둥바둥 했지만 따라가기 급급했지 선두에 서서 이끌어나가기엔 턱없이 부족했다. 그랬기에 어쩔수 없이 주입식으로 학습했으며, 선암기 후이해를 외치며 통학 왕복 네시간의 시간동안 대중교통에서 졸며 공부했던 기억이다. 지금와서 생각해보면 언어라는것은 하나의 표현 방법일 뿐이고, ..

Archive/scratch 2017.05.28

스크래치로 가위바위보 게임 만들기

코딩클럽 청년샘 4기 연수 과제 중 하나로 선택된 스크래치로 가위바위보 게임 만들기 가위바위보 게임 가기 결과물 링크는 위에 첨부된 링크를 따라가면 된다. 그럼 내가 어떻게 만들었는지 하나씩 파헤쳐보자. (그렇게 자랑할만한 수준은 아니지만..) 우선 아래는 모든 스프라이트에 대한 스크립트를 모두 캡쳐한 화면을 기준으로 하나씩 살펴보자, 1. 무대에 대한 스크립트에서는 무슨짓을 하는지 자세히 살펴보자. 보기 힘들기 때문에 스크립트만 가져와서 자세히 설명을 달아보았다. 라인별로 설명하면 01 : '게임시작하기'라는 방송을 받으면 이 스크립트를 시작하도록 되어있다. 02 : '사용자_점수'변수와 '컴퓨터_변수'점수가 10점인 값이 있는지 or 조건으로 하나만 참이어도 바로 아래 03라인을 실행한다. 하지만 하..

Archive/scratch 2017.05.25

java 접근 제한자와 가시성, private을 통한 encapsulation과 information hiding

다른 언어에도 있지만, 이 '접근 제한자'라는 개념이 있다. 단어에서도 느껴지듯 내가 아닌 다른 곳(혹은 것)에서의 접근을 제한하겠다는 의미이다. 모두에게 공개하지 않겠다는 말. 보통 네가지 종류의 접근 제한자가 있다. 1. public 접근을 제한하지 않는다. 모두의 접근을 허용한다. 그래서 보통 클래스의 멤버 메소드는 이 public을 사용해서 작성한다. 왜? 생각해보면 단순하다. 내가 만든 이 기능 모두가 널리널리 사용했으면 좋겠으니까? 2. protected 동일한 패키지 내에 존재하거나, 다른 패키지에 존재한다면 상속을 받은 경우에만 접근이 가능하다. 3. package 아무런 접근제한자를 명시하지 않으면 이 package라고 생각하면 된다. default값으로 동일한 패키지 내에서만 자유롭게 ..

Archive/Java 2017.05.25

정적 import (static import)의 사용, import에 static 예약어를 붙이면 어떻게 될까?

java에서 import 예약어를 사용하는 경우가 있다. 어떤 경우냐면 java에서 선언하지 않아도 기본적으로 import해주는 java.lang 패키지가 아닌 다른 클래스 파일이나 라이브러리를 해당 소스에서 사용하고자 할 경우, 외부 클래스 파일이나 라이브러리를 추가하기 위한 경우이다. 예를 들면 사용자로부터 숫자를 입력 받기위해 java의 util패키지에 선언된 Scanner클래스를 사용할 때 아래와 같이 해당 클래스르 import해 주어야 사용 가능하다. [소스 1] import java.util.Scanner; public class Example { public static void main(String[] ar) { Scanner sc = new Scanner(System.in); System..

Archive/Java 2017.05.25

자바 상수, 변수, 배열, (구조체), 클래스 개념 총정리

자바 애플리케이션이 동작하는 관점에서의 원자단위라고 생각되는 클래스라는 것의 개념에 대해 정리해보려 한다. 지난번 제네릭에 대해 알아볼 때 살짝 언급되었던 적이 있었다. (java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭) 사실 클래스라는 것에 도달하기 위해서 거쳐가야할 개념들이 좀 있다. 쭉 나열해보자면 대강 '상수' -> '변수' -> '배열' -> '구조체' -> '클래스' 이렇다고 할 수 있다. 우선 자바에서 상수는 아래처럼 사용할 수 있다. public class Example { public static final int NUMBER = 10; public static void main(String[] ar) { System.out.println(NUMBER);..

Archive/Java 2017.05.25

java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 2편, 어떻게 제네릭

이전에 왜 제네릭이 나왔는지 알았다면, (java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭) 이번에는 기본적인 제네릭 사용 방법에 대해 정리를 해보려 한다. 우선 이 다이아몬드 괄호라고 불리는걸 보면 일단 '제네릭이다' 라고 생각하면 된다. 제네릭은 크게 ​클래스​에 적용할 수 있고 또 ​메서드​에도 적용해서 사용할 수 있다. 1. 클래스에 사용할 때는 아래와 같은 형태를 갖는다. package com.xxxelppa.generic; public class GenericTest { public static void main(String[] ar) { Generic_sub gs = new Generic_sub(); } } class Generic_sub { private T..

Archive/Java 2017.05.25

java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭

오늘의 주인공 java의 Generic 우선 가볍게? 정의 부터 찾아보자. 뭐든지 그 정의가 가장 중요하다. 출처] 네이버 어학사전 그렇다면 프로그래밍에서의 Generic은 어떻게 정의되어 있는지 찾아보았는데 '제네릭은 뭐다." 이렇게 깔끔하게 딱 떨어지는 정의는 마땅히 찾지 못하고, 가장 잘 설명한 문장을 찾았다. 제네릭은 '클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법'이다. 그러면 왜 클래스 내부에서 사용할 데이터 타입을 밖에서 지정해주자는 것일까? 그래서 준비했다. 아래 상황을 살펴보자. 자바를 너무 좋아하는 촉이 좋은 '감자바'씨는 친구 '좀해조'씨로부터 두개의 숫자를 출력 하는 프로그램을 만들어 달라는 요청을 받았다. 그래서 우리 감자바씨는 흔쾌히 만들어주겠다고 하며 두팔 걷어부..

Archive/Java 2017.05.25

자바 가상 머신(JVM)의 구조 요약

자바 가상 머신 (Java Virtual Machine, JVM) 자바 가상 머신은 물리적인 실제의 기계 장치가 아니라 추상적인 장치이며, 클래스 파일을 실행할 수 있는 기계어 파일로 번역해준다. 자바 가상 머신은 클래스 영역, 자바 스택 영역, 힙 영역, 네이티브 메소드 스택 영역으로 구성되어 있다. 1. 클래스 영역 : 실행에 필요한 클래스들을 로드하여 저장하는 공간이다. 로드된 클래스의 멤버 메소드들은 메소드 영역에 저장되고, 상수들은 상수 영역에 저장된다. 또한 사용자가 작성한 클래스 코드를 저장하는 영역이다. 2. 자바 스택 영역 : 자바 프로그램을 수행하면서 발생하는 메소드 호출과 복귀에 대한 정보를 생성하여 저장하고 관리하는 공간이다. 그렇기 때문에 인터럽트가 발생하는 등의 요청이 중간에 발..

Archive/Java 2017.05.24