[Design Pattern / Java] Template Method패턴
·
JAVA-기초/Design Pattern
[Design Pattern] - Template Method패턴 🟰 Templete Method란? ✅상위 클래스 쪽에 템플릿이 될 메서드가 정의되어 있고, 그 메서드 정의에 추상 메서드가 사용된다. ✅따라서 상위 클래스만 봐서는 최종적으로 어떻게 처리될 지 모른다. ✅상위 클래스로 알 수 있는 것은 추상 메서드를 호출하는 방법뿐 ✅하위 클래스에서 상위 클래스의 추상 메서드를 구현하며 각 하위 클래스에서 다르게 구현하면 처리도 다르게 이루어진다. ✅하지만 처리의 큰 흐름은 상위 클래스에서 구성한대로 된다. 🟰예제 프로그램 📌문자나 문자열을 5번 반복하여 표시하는 프로그램 📌등장하는 클래스 ✅ AbstractDisplay클래스 구현된 메서드는 display메서드 display안에는 open , print..
[Design Pattern / Java] Factory Method(공장처럼 찍어내는 인터페이스)
·
JAVA-기초/Design Pattern
[Design Pattern] - Template Method패턴 작성일시: 2023년 9월 1일 오전 1:18 종류: DesignPattern 복습: No 🟰 Templete Method란? ✅상위 클래스 쪽에 템플릿이 될 메서드가 정의되어 있고, 그 메서드 정의에 추상 메서드가 사용된다. ✅따라서 상위 클래스만 봐서는 최종적으로 어떻게 처리될 지 모른다. ✅상위 클래스로 알 수 있는 것은 추상 메서드를 호출하는 방법뿐 ✅하위 클래스에서 상위 클래스의 추상 메서드를 구현하며 각 하위 클래스에서 다르게 구현하면 처리도 다르게 이루어진다. ✅하지만 처리의 큰 흐름은 상위 클래스에서 구성한대로 된다. 🟰예제 프로그램 📌문자나 문자열을 5번 반복하여 표시하는 프로그램 📌등장하는 클래스 ✅ AbstractDis..
[Java] hashCode와 Equals를 함께 재정의하는 이유
·
JAVA-기초/JAVA기본
Set과 Map의 타입이 Wrapper Class가 아닌 Object를 받을 때 중복 검사는 어떻게 진행하는가?➕ hashCode() 메서드를 오버라이딩하여 리턴된 해시코드 값이 같은지 판단합니다. 값이 다르다면 다른 객체로 판단하고, 해시코드 값이 같다면 equals()메서드를 오버라이딩 하여 다시 비교합니다.위의 개념을 위해서는 동일성과 동등성을 먼저 알아야한다. **동일성** : 두 개의 객체가 완전히 하나의 같은 객체인지 판단하는 것. 즉 , 메모리에 저장된 주소공간이 완전히 같을 경우 동일성이 보장된다.  **동등성** : 두 객체의 주소공간이 달라도 단순히 가지고 있는 값만 같다면 동등성이 보장된다. 이는 단순 문자열(원시형)과 객체로 생성한 값 사이의 차이점과 동일하다.그 다음으로는 equa..
[Java- Algorithm] 너비 우선 탐색법(BFS과 큐(Queue)
·
JAVA-기초/JAVA기본
너비 우선 탐색법(BFS)이란? File:Breadth-First-Search-Algorithm.gif - Wikimedia Commons No higher resolution available. commons.wikimedia.org 위의 GIF는 BFS이고 아래는 DFS이다. 차이점을 먼저 확인해보자. ✅공통점 방문 여부 확인을 통해 한 번 지나간 노드는 다시 방문하지 않는다. ✅차이점 DFS는 정점(1)에서 연결된 노드를 순서대로 아래로 내려가며 다음 노드가 없는 경우 다음 연결된 노드로 이동하며 탐색한다. 또한 재귀호출 및 스택방식으로 코드를 구현한다. BFS는 같은 레벨(가장 가까운 노드)에서 검색을 시작하며 최단 거리를 탐색한다. 큐 방식으로 코드를 구현한다. 배열에서 사용하는 경우 방향 데이..
[자료구조 - Graph 와 DFS] Graph와 DFS란?
·
JAVA-기초/JAVA기본
[Algorithm] 깊이 우선 탐색 목차 1. DFS란? 2. 그래프란? 그래프의 특징 그래프의 종류 그래프 용어 1. DFS란? 깊이 우선 탐색(Depth-First-search)은 그래프 완전 탐색 기법중 하나 그래프의 시작 노드에서 출발하여 탐색할 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 분기 쪽으로 이동하여 탐색을 수행하는 알고리즘 트리의 완전 탐색에 사용된다. 깊이 우선탐색 특징 기능 특징 시간 복잡도 (노드 -V, 엣지 - E) 그래프 완전 탐색 - 재귀 함수로 구현 - 스택 자료구조 이용 O(V+E) DFS는 사실상 재귀함수문제와 다름없다. 재귀 함수를 이용하므로 스택오버플로에 유의해야 한다. DFS를 이용하여 풀 수 있는 문제는 단절점 찾기, 단절선 찾기, 사이클 찾기, 위상..
자바(java) - Optional이란?
·
JAVA-기초/JAVA기본
Optional이란? Java8에서부터 지원하는 기능 java.util의 하위 클래스 NPE를 방지할 수 있도록 도와준다. null이 올 수 있는 값을 Wrapper클래스로 감싸준다. NPE란? NullPointerException 가장 많이 발생하는 예외중 하나 null 여부를 검사함으로써 예외가 터지는것을 방지할 수 있다. 검증하는 코드는 복잡하고 번거롭다. NPE 예시 코드 @Test public void test01() { String name = null; System.out.println(name.charAt(0)); // name은 null이기 때문에 NPE가 발생한다. if (name == null) { name = "userA"; //null을 체크해서 값이 없는 경우 새로운 값을 삽입하..