SOLID 원칙- 객체 지향 프로그래밍에서 좋은 설계와 유지보수 가능한 소프트웨어를 만들기 위한 다섯 가지 핵심 원칙을 제공한다.- 소프트웨어 개발 과정에서 코드의 유연성, 재사용성, 유지보수성을 높이는 데 중요한 역할을 한다.- SOLID는 각 원칙의 첫 글자를 따서 명명된 약어이다.ISP (Interface Segregation Principle, 인터페이스 분리 원칙)정의- 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 말아야한다는 원칙이다.목표- 클라이언트가 자신이 필요로 하는 인터페이스만을 사용하도록 하여, 불필요한 의존성을 줄인다.예시public interface Workable { void work();}public interface Eatable { void eat();..
SOLID 원칙- 객체 지향 프로그래밍에서 좋은 설계와 유지보수 가능한 소프트웨어를 만들기 위한 다섯 가지 핵심 원칙을 제공한다.- 소프트웨어 개발 과정에서 코드의 유연성, 재사용성, 유지보수성을 높이는 데 중요한 역할을 한다.- SOLID는 각 원칙의 첫 글자를 따서 명명된 약어이다.SRP (Single Responsibility Principle, 단일 책임 원칙)정의- 클래스는 오직 하나의 책임만 가져야하며, 그 책임을 완전히 캡슐화해야 한다는 원칙이다.목표- 클래스를 설계할 때 각 클래스가 하나의 역할만 수행하도록 하여, 클래스의 변경이 다른 클래스에 영향을 미치지 않도록 한다.예시[ SRP 적용 전 ] public class Employee { private String name; p..
객체지향(OOP)이란?- 코드를 적절히 잘 분류할 수 있어야한다.- 경우에 따라 특정 모듈을 통째로 변경해야 할 수도 있다.클래스(Class)- 프로그램의 코드를 체계적으로 분류할 수 있다.- 같은 역할을 하는 코드를 응집성있게 모아준다. 유지보수- OracleDB에서 MysqlDB로 변경하거나, RDB를 NoSQL로 변경하는 등과 같이 시스템이 교체되는 경우를 의미한다.- 소프트웨어를 수정이 쉽게 유지하는 것은 쉽지 않아, 다수의 기능을 구현하며 수정하다보면 꼬이는 소스가 발생한다.수정이 어려운 이유- 기능이 복잡하게 섞여있어 어디를 어떻게 고쳐야할 지 파악이 어렵다.- 기능 추가 후에 기존에 잘 수행되던 기능들이 갑자기 동작이 되지 않는 경우가 있다.- 수정한 부분과 전혀 상관없는 곳이 갑자기 잘못..
스트림(Stream)이란?- 배열, 컬렉션 등의 데이터를 하나씩 참조하여 코드를 실행할 수 있는 기능을 제공한다.- 람다식을 사용해서 간결하게 요소들을 다룰 수 있다.- 대량의 데이터를 병렬로 처리할 수 있다. 이를 통해 대량의 데이터에서 평균값, 최대값, 조건에 맞는 결과값, 통계 등을 쉽게 얻을 수 있다.- 데이터를 최종 처리하기 전에 여러 가지 중간 처리를 할 수 있다.- 스트림은 크게 3가지로 구성되며, 스트림 생성(원본 스트림) ▶ 중개 연산(필터링 스트림, 매핑 스트림) ▶ 최종 연산(최종 처리 스트림) 과정으로 구성되어 있다.스트림 종류- 자바에서 제공하는 스트림 클래스를 이용하면 여러 가지 데이터 소스에서 데이터 스트림으로 변환해서 일관성 있고 빠르게 처리할 수 있다.- 자주 사용되는 데..
람다식 (Lambda Expression)- 자바 8버전에서 처음 도입되었으며, 함수형 프로그래밍 스타일을 지원하는 표현식이다.- 익명 클래스를 더 간단하고 간결하게 작성할 수 있으며, 주로 추상 메소드가 하나만 있는 인터페이스와 함께 사용된다.- 메소드 대신 하나의 식으로 표현하며, 익명 함수 (Anonymous function) 이라고도 한다.- 코드가 간결해지고, 코드 가독성과 생산성이 높아진다는 장점을 지닌 반면, 재사용이 불가능하고 디버깅이 어렵고 재쉬함수로는 맞지 않다는 단점을 지니고 있다. 람다식 기본 문법- 자바에선 람다식을 익명 객체를 이용해서 구현하며, "->" 기호를 이용해서 객체 생성 없이 바로 추상 메소드를 함수처럼 구현한다.- 람다식 이전public abstract 리턴 타입 ..
컬렉션 프레임워크 (Collection Framework)- 여러 가지 자료 구조(Data Structure)를 쉽게 사용할 수 있도록 자바에서 미리 구현하여 제공하는 클래스를 말한다.- 대표적인 인터페이스로는 List 인터페이스, Set 인터페이스, Map 인터페이스 등이 있다. Map 계열 클래스- 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합이며, 이를 엔트리(entry)라고 한다. - 키는 중복을 허용하지 않으며, 하나의 키는 하나의 값과 연결된다.- key를 이용하여 저장한 값을 얻을 수 있다.- 대표적인 클래스로는 HashMap 클래스와 TreeMap 클래스 등이 있다. Map 인터페이스에 선언되어 있는 주요 메소드들- 모든 Map 인터페이스를 상속하는 Map 구현 클래스에 공..