분류 전체보기
-
Design Pattern이란?Software Engineering 2020. 5. 27. 10:30
디자인 패턴이란? 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 재발했을 때 재사용할 수 있는 해결책 디자인 패턴 구조 콘텍스트(Context) 문제가 발생하는 여러 상황을 기술, 즉 패턴이 적용될 수 있는 상황을 나타냄 경우에 따라서는 패턴이 유용하지 못한 상황을 나타내기도함 문제(Problem) 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야함 해결(Solution) 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿 디자인 패턴 종류 GoF라고 불리는 에리히 감마, 리차드 헬름..
-
SOLID 원칙Software Engineering 2020. 5. 23. 19:44
SOLID 객체지향 설계에서 지켜야할 5개의 원칙(SRP, OCP, LSP, ISP, DIP) 변경사항에 유연하게 대처하고 확장성있는 시스템을 만들기 위해 적용 좋은 설계란? 요구사항이나 변경이 있을 때 가능한 영향 받는 부분이 적어야함 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 객체는 단 하나의 책임만 가져야 한다는 원칙 책임이 많으면 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성이 높아짐 책임이 많으면 클래스가 변경될 가능성이 높음 여러 객체들이 하나의 책임만 갖도록 분배하면 시스템에 변화가 생기더라도 영향을 최소화 할 수 있음 2. OCP(Open-Closed Principle) : 개방 폐쇄 원칙 기존의 코드를 변경하지 않으면서(Close..
-
OOP(Objected Oriented Programming) 란?Software Engineering 2020. 5. 23. 13:44
OOP Object Oriented Programming의 약자 객체들이 서로 메시지를 주고 받으며 데이터를 처리 강한 응집력과 약한 결합력을 지향 장점 프로그램을 유연하고 변경이 용이하게 만듬 프로그램의 개발과 유지 보수를 간편하게 만듬 직관적인 코드 분석을 가능하게함 구성 요소 클래스(Class) 동일한 속성과 행위를 갖는 객체들의 집합 객체(Object) 클래스의 인스턴스 메서드(Method) 클래스로부터 생성된 객체를 조작하는데 사용 특징 추상화(Abstaction) 어떤 영역에서 필요로 하는 속성이나 행동을 추출하는 작업 구체적인 사물들의 공통적인 특징을 파악해서 하나의 개념으로 다루는 수단 구체적인 개념보다 추상적인 개념에 의존하면 변경사항에 유연하게 대처할 수 있음 캡슐화(Encapsulat..
-
[백준] 3053번 택시 기하학 (JAVA)Algorithm 2020. 5. 22. 14:42
문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄에는 유클리드 기하학에서 반지름이 R..
-
[백준] 4153번 직각삼각형 (JAVA)Algorithm 2020. 5. 22. 14:25
문제 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. 입력 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. 출력 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. 예제 입력1 6 8 10 25 52 60 5 12 13 0 0 0 예제 출력1 right wrong right 코드 import java.util.Scanner; public class no_4153 { public static void main(String[] args) { in..
-
[JAVA] 스트림(Stream)JAVA 2020. 5. 21. 21:04
Stream Stream이란? Java8에서 추가된 것으로 람다를 활용할 수 있는 기술 중 하나 배열 또는 컬렉션등의 저장요소를 하나씩 참조해 람다식을 적용하여 반복적으로 처리할 수 있음 즉, 배열과 컬렉션을 함수형으로 처리할 수 있음 스트림 구조 스트림 생성 : 스트림 인스턴스 생성 중간 연산 : 필터링 및 매핑 등 원하는 결과를 만드는 중간 작업 최종 연산 : 최종적으로 결과를 만들어내는 작업 Create Operations - Arrays.stream() String[] arr = new String[] {"A", "B", "C"}; Stream stream = Arrays.stream(arr); Stream streamOfArrayPart = Arrays.stream(arr, 1, 3);- Col..
-
[JAVA] 람다식(Lambda Expression)JAVA 2020. 5. 21. 21:03
Lambda Expression 람다식이란? 함수적 프로그래밍을 위해 JAVA8 에서 추가된 기능으로 익명객체를 생성하기 위한 표현식 쉽게말해 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식 - 람다식 이전 기존 자바에서는 다형성을 제공하기 위해 interface를 만들고 그것을 구현한 class를 만들어 interface참조 변수에 interface를 구현한 class객체를 생성해 사용함 public interface ExampleInterface { public void ex(); } public class Example implements ExampleInterface { @Override public void ex(){ System.out.println("Exampl..
-
[백준] 3009번 네 번째 점 (JAVA)Algorithm 2020. 5. 21. 20:50
문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 예제 입력1 30 20 10 10 10 20 예제 출력1 30 10 코드 import java.util.Scanner; public class no_3009 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] x = new int[3]; int[] y = new int[3]; int[] result = new int[2]; int ..