본문 바로가기

전체 글

(67)
디자인 패턴 디자인패턴이란? 디자인 패턴은 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할때 참조할 수 있는 전형적인 해결 방식이다. 디자인 패턴을 통해 설계 문제, 해결 방법, 해결 방법을 언제 적용해야 할지, 그 결과는 무엇인지 등을 알 수 있다. 또한 디자인 패턴은 한 패턴에 변형을 가하거나 어떠한 요구사항을 반영하면 다른 패턴으로 변형되는 특징이 있다. 확장과 수정에 용이하여 설계 이후에도 추가적인 유지 보수에 비용이 적게들어가는 코드를 설계하는 것이 목표이다. 객체지향 방법론 에서 좋은 코드를 설계하기 위해 지켜야 하는 원칙이 SOLID 원칙이고, 이러한 원칙에 기반해서 좀 더 구체적인 코드로 분류한 것이 디자인 패턴이다. ✔ 아키텍쳐 패턴과 디자인 패턴 아키텍쳐 패턴은 주어진 상황의 소..
[TIL] 210805 1. Collection 2. Iterator 3. Stream 4. Optional Collection 여러 데이터의 묶음을 Collection이라고 한다. Collection은 추상체 Collection의 구상체 : List, set List의 구상체 : LnkedList, ArrayList, Vector, Stack Set의 구상체 : HashSet Iterator 여러 데이터의 묶음을 풀어서 하나씩 처리할 수 있는 수단을 제공한다. next()를 통해서 다음 데이터를 조회할 수 있다. 앞 쪽 방향으로 방향을 바꿀 수 없다. --> 이전 데이터 조회 불가 Stream Java 8 이상에서 부터 사용 가능. 데이터의 연속을 나타냄 Collections.stream() 을 제공, stream() 메서드..
Object 클래스 - 메서드 Object클래스 Object 변수는 모든 자바 클래스의 부모 클래스이다. 때문에 모든 클래스는 Object의 메서드를 사용할 수 있는데, 모든 클래스가 공통으로 포함하고 있어야 하는 기능을 제공하기 위해서 존재한다고 생각해도 무방하다. String toString() 인스턴스에 대한 정보를 문자열로 반환한다. 해당 메소드는 기본적으로 각 API 클래스마다 자체적으로 오버 라이딩을 통해 재정의되어 있기 때문에 활용도가 높다. newObject.toString(); protected Object clone() 해당 인스턴스를 복제하여, 새로운 인스턴스를 생성해 반환한다. 하지만 필드의 값만을 복사하므로, 필드의 값이 배열이나 인스턴스면 제대로 복제할 수 없다. 따라서 클래스에서 Cloneable 인터페이스..
Constant Pool Constant pool은 리터럴 상수 값을 저장하는 곳이다. String a = "String Pool"; String b = "String Pool"; String c = new String("String Pool"); System.out.println((a==b)?true:false); //true System.out.println((a==c)?true:false); //false java에서 일반적으로 문자열을 비교할 때 == 연산을 사용하지 않고 .equals()를 사용하여 문자열이 일치하는지 비교한다. 그 이유는 java에서 == 연산은 객체의 주소값을 비교할 때 사용하기 때문이다. 하지만 예시 코드의 연산 결과는 true이다. 그 이유를 알기 위해서는 Constant Pool과 literal..
StringBuffer / StringBuilder의 차이점 StringBuffer 와 StringBuilder StringBuffer와 StringBuilder는 둘다 문자열을 다루는 클래스입니다. String으로 문자열을 저장하여 사용할 경우, 문자열에 변형이 있을 때 마다 새로운 Constant가 생성되는 문제가 있기 때문에 메모리 관리에 문제가 생기게 됩니다. 이를 방지하기 위한 방법으로 StringBuffer 와 StringBuilder 두가지 클래스를 사용합니다. 두 클래스는 가변성을 가지기 때문에 .append(), .delete() 메소드를 이용해 문자열의 수정이 가능합니다. StringBuffer, StringBuilder의 공통 주요 메소드 append(값) StringBuffer, StringBuilder 뒤에 값을 붙인다 insert(인덱스,..
[TIL] 210804 1. interface의 기능 2. default Method 3. Functional Interface 4. Lambda 표현식 1. Interface의 기능 (1) 구현을 강제 인터페이스 : 모든 메서드가 추상 메서드로 구성된 클래스 한 클래스에 여러개의 implements를 가질 수 있음 구현 부분이 없으므로 implement 후에 꼭 구현 부분을 구현해야 함 (2) 다형성을 제공 (3) 결합도를 낮추는 효과 (의존성을 역전) //1. Main m = new Main(); m.myRun(); m.yourRun(); //2. MyRunnable mm = new Main(); mm.myRun(); //mm.yourRun(); //3. YourRunnable mmm = new Main(); //mmm.m..
[TIL] 210803 1. 객체지향 프로그래밍 2. 객체지향의 특성 3. UML 4. 객체지향 설계의 5가지원칙 1. 객체지향 프로그래밍 객체지향 프로그래밍 : 프로그램을 객체로 구성하는 것 - 프로그램이 거대화 되면서 등장함 - 큰 프로그램을 만드는 방법으로 작게 나눠서 만든 후 합치는 방법을 택한 것 객체란? - 개념적 용어 : 객체 - 기술적 용어 : class, instance - 객체는 각각 작은 기능을 수행하고 객체가 모여서 큰 프로그램이 됨 즉, 객체지향을 잘 설계하는 법은 일(기능)을 잘게 쪼갠 후 객체에게 위임하고, 서로 협력하게 만드는 것이다. - 객체를 서로 구분할 필요가 있다. - 구분하는 기준 : Type 2. 객체지향의 특성 (1) 캡슐화 - 캡슐화는 2가지의 의미가 있다. - 1. 완성도가 있다. ..
자바 환경설정 - JDK 버전 바꾸기 Java를 공부하면서 eclipse, vscode, sts와 같은 툴을 사용해봤는데, 짧은 기간에 많은 툴을 써본 만큼 환경설정하면서 많은 오류들이 발생했었어요. sts를 새로 설치하고나서 코테공부를 위해 vscode를 켰더니 실행이 안됐던 기억이 새록새록 나는데 이번에 데브코스를 시작하면서 새로운 마음가짐으로 JDK 버전설정을 제대로 다시 해보기로 마음먹었습니다..!! - 문제점 제 JDK 환경설정의 문제점은 1. 버전이 3가지가 설치되어있다 2. jdk가 아닌 jre로 실행된다 3. 실행하고싶은 버전으로 바뀌질 않는다 였습니다. 정말 지금봐도 환경설정에 대해서 하나도 모르는 채로 java 언어 공부만 했던 것 같네요 원래 설치되어있던 버전은 oracle JDK 16버전과 8버전 이었습니다. - Ope..