개발공부/Java

함수형 프로그래밍과 람다식 - 자바는 객체지향프로그래밍입니다 : 기능을 수행하기 위해서는 객체를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현해야 합니다. - 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 합니다. - 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식입니다. - 함수형 프로그래밍(Functional Programming : FP) ? 함수형 프로그래밍은 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향을 주지 않도록 구현하는 방식입니 다. 순수 함수란 매개변수만을 사용하여 만드는 함수입니다. 즉, 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에는 영향을 주지 않습니다. 함수를 기반으로 하는 프로그래밍이..
객체지향프로그래밍 현실 세계에서 어떤 제품을 만들 때, 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들 듯이, 소프트웨어를 개발할 때에도 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OOP : Object Oriented Programming) 이라고 합니다. 객체 지향 프로그래밍을 이해하기 위해서는 우선 객체의 개념과 객체 상호작용에 대해서 알아두어야 합니다. 6.1 객체란? 객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 의미합니다. 예를 들어 물리적으로 존재하는 자동차, 자전거, 책, 사람과 추상적인 학과, 강의, 주문..
스트림이란? - 자료의 대상과 관계없이 동일한 연산을 수행 배열, 컬렉션을 대상으로 연산을 수행함 일관성있는 연산으로 자료의 처리를 쉽고 간단하게 함 자료 처리에 대한 추상화가 구현되었다고 함 - 한 번 생성하고 사용한 스트림은 재사용할 수 없음 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨. 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함 - 스트림 연산은 기존 자료를 변경하지 않음 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행되도 기존 자료에 대한 변경은 발생하지 않음 - 스트림 연산은 중간 연산과 최종 연산으로 구분됨 스트림에 대한 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종 연산은 마지막에 한 번만 적용됨 최종연산이 ..
제네릭 자료형 정의 - 클래스에서 사용하는 변수의 자료형이 여러개 일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언 - 실제 사용되는 자료형의 변환은 컴파일러에 검증되므로 안정적인 프로그래밍 방식 - 컬렉션 프레임워크에서 많이 사용되고 있음 제네릭 타입을 사용하지 않는 경우의 예 예를 들어 3DPrinter의 재료가 바뀌는 경우이다. Powder, Plastic, ThreeDPrinter1, ThreeDPrinter2, ThreeDPrinter3 총 5개의 클래스파일을 생성한다. Powder.java public class Powder { public String toString() { return "재료는 Powder입니..
데이터 타입에는 기본 타입, 참조 타입이 있습니다. 기본 타입은 정수타입, 실수타입, 논리 타입이 있습니다 참조타입은 배열타입, 열거 타입, 클래스, 인터페이스가 있습니다. 여기서 객체란, 데이터와 메소드로 구성된 덩어리라 생각하면 됩니다. 여기서 기본 타입과 참조 타입의 차이점은 저장되는 값입니다. 기본 타입 변수는 직접적인 값을 갖고 있지만, 참조 타입 변수는 번지를 갖고 있습니다. String 타입은 직접 값을 갖고 있는 것처럼 보이지만, 실제로는 참조 타입입니다. 메모리 상에서 이 변수들이 갖는 값을 그림으로 표현하면 아래 그림과 같습니다. 변수들은 모두 스택이라는 메모리 영역에 생성됩니다. 기본 타입 변수인 age와 price는 직접 값을 저장하고 있지만, 참조 타입 변수인 name과 hobby..
전략 패턴으로 불리며, 객체지향의 꽃이다. 유사한 행위들을 캡슐화하여, 객체의 행위를 바꾸고 싶은 경우 직접 변경하는 것이 아닌 전략만을 변경하여, 유연하게 확장하는 패턴. SOLID중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 전략 메서드를 가진 전략 객체 (Normal Strategy, Base64 Strategy) 전략 객체를 사용하는 컨텍스트 ( Encoder ) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 - appendStrategy.java package com.company.design.strategy; public class AppendStrategy implements EncodingStrategy{ @Override public String encode(St..
Facade는 건물의 앞쪽 정면이라는 뜻을 가진다. 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때, 중간에 facede라는 객체를 두고, 여기서 제공하는 interface 만을 활용하여 기능을 사용하는 방식. facade는 자신이 가지고 있는 각 클래스의 기능을 명확히 알아야 함. - Ftp.java package com.company.design.facade; public class Ftp { private String host; private int port; private String path; public Ftp(String host, int port, String path){ this.host = host; this.port = port; this.path = p..
관찰자 패턴은 변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현한 것이다. 많이 보이는 곳은 event listener 에서 해당 패턴을 사용하고 있다. - IButtonListener.java package com.company.design.observer; public interface IButtonListener { void clickEvent(String event); } -Button.java package com.company.design.observer; public class Button { private String name; private IButtonListener buttonListener; public Button(String name){ this.name ..
환타몬
'개발공부/Java' 카테고리의 글 목록