목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 개념 및 정의 어떤 메서드를 선언해야하는지 알려주는 일종의 명세서다. 구현할 기능의 속성에 맞게 코드재사용성을 고려하여 인터페이스를 구현하는 추상 클래스에 모든 메서드를 구현하지 않고 대신에 일부 메서드만 구현한 후에 나머지 메서드는 하위 클래스에 구현을 위임하여 다형성을 추구할 수 있다. 교재 활용 예시 Calc.java public interface Calc { double PI = 3.14; int ERROR = -99999999; int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, in..
목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 전략 패턴(Strategy pattern) 정의 알고리즘을 캡슐화하여 객체 간에 상호 교환 가능하게 만드는 디자인 패턴 여러 알고리즘을 정의하고, 이들을 추상화된 인터페이스로 구현한 후, 실행 중에 원하는 전략을 선택할 수 있다. 정렬 알고리즘 인터페이스를 예시로 들어봤다. interface SortingStrategy { void sort(int[] arr); } class BubbleSort implements SortingStrategy { public void sort(int[] arr) { // Bubble sort algorithm implementation } } class QuickSort implements SortingStrat..
목차 개요 명시적인 .. 묵시적인.. 또 어떤 자료에는 암시적인 .. 공학분야도 그렇지만 나라별로 그 분야의 선구자가 해외의 단어나 명칭을 해석하는 단어로 굳어지는 경우가 많다. 공학같은 strict 한 분야면 모를까 비교적 자유로운 분위기인 컴퓨터 공학쪽에서는 같은 단어를 여러가지 명칭으로 부르는 경우가 있는 것 같다. 딱 정리하자면 Explicit ; 명시적인 → 개발자가 코드에서 직접 ~~ 하는 것을 말한다. Implicit ; 암시적인, 묵시적인 → 컴파일러나 런타임 시스템에 의해 자동으로 ~~ 되는 것을 말한다. 묵시적 형변환 타입 변환을 시스템이 자동으로 실행 컴파일러가 변환 중에 데이터 손실이 없다고 판단할 때 이루어진다. 이는 데이터 타입에 따라서 조금 상세하게 이해를 할 필요가 있다. 원..
목차 개요 카카오테크캠퍼스 백엔드 과정 주차 관련 공부내용 정의와 간단한 구현 구조 클래스 간의 코드 재사용을 쉽게 만들어주는 객체 지향 프로그래밍의 핵심 기능 중 하나 자바에서는 extends 키워드를 사용해 상속을 구현 할수 있고 저번에 배웠었던 클래스의 접근 제한자인 **private**와 protected 를 이용해서 접근 범위를 구체적으로 지정해서 더욱 상세한 구현이 가능하다. class Parent { private int privateVar; protected int protectedVar; private void privateMethod() { // 이건 외부, 자식 클래스에서 접근이 불가능하다. } protected void protectedMethod() { // 이 클래스 내부와 자식..
목차 개요 카카오테크캠퍼스 백엔드 과정 강의를 듣다가 HAS-A 관계와 IS-A관계에 관한 내용이 나와서 또 다른 관계는 없을까 라는 생각에 공부해보게 되었다. 객체지향 프로그래밍에서는 클래스 간의 상호작용과 협력을 나타내는 여러 가지 관계가 존재한다. 이 글에서는 이러한 관계들을 알아보고, 코드의 재사용성과 응집도, 그리고 유지 보수성을 높이는 데 도움이 되는 설계 원칙을 소개한다. IS-A 관계 (상속) - 강한 결합 IS-A 관계는 클래스 간의 상속 관계를 의미한다. 하위 클래스가 상위 클래스의 특별한 종류로 간주되며, 상위 클래스의 속성과 메서드를 물려받는다. 이 관계를 통해 코드의 재사용성을 높일 수 있고, 상속 계층을 통해 객체 간의 일반화와 특수화를 구조화할 수 있다. HAS-A 관계 (연관..
목차 개요 프로젝트를 진행하다보면 데이터베이스와의 상호작용에서 일시적인 필드를 사용해야 하는 경우가 종종 있다. 이런 경우에 단순한 작업의 경우에는 @Transient 어노테이션을 사용하여 필드를 영속성 컨텍스트에서 제외시킬 수 있다. 이 포스팅에서는 처음에 @Transient 어노테이션을 사용하여 구현하는 원리를 설명한 후, 나중에 Data Transfer Object(DTO)를 사용하여 레이어를 분리하는 방법에 대해 설명하고 그에 따른 장단점을 설명하겠다. @Transient 어노테이션을 사용한 구현 @Transient 어노테이션은 JPA에서 사용되며, 클래스의 필드를 영속성 컨텍스트에서 제외시켜서 해당 필드는 데이터베이스에 저장되지 않고, 데이터베이스로부터 로드되지도 않게된다. 위의 코드에서는 Bu..