분류 전체보기 37

[Java] super 키워드 사용법

자바 프로그래밍에서 상속은 매우 중요한 개념입니다. 상속을 통해 코드를 재사용하고, 유지보수성을 높일 수 있습니다. 상속을 사용하는 과정에서 자주 등장하는 키워드 중 하나가 바로 super입니다. 오늘은 이 super 키워드가 무엇인지, 어떻게 사용하는지에 대해 알아보겠습니다.정의 및 기능super 키워드란?super 키워드는 상위 클래스(부모 클래스)의 멤버를 참조하거나 상위 클래스의 생성자를 호출하기 위해 사용됩니다.이는 두 가지 주요 용도로 나눌 수 있습니다.상위 클래스의 생성자 호출상위 클래스의 메서드 호출상위 클래스의 생성자 호출상위 클래스의 생성자를 호출할 때는 super()를 사용합니다. 하위 클래스의 생성자 내부에서 super()를 호출하여 상위 클래스의 생성자를 명시적으로 호출할 수 있습..

Develop/Java 2024.08.03

[Java] JPA 엔티티 : 외래키 설정 vs ID 저장 방식 비교

JPA(Java Persistence API)는 자바 애플리케이션에서 객체와 관계형 데이터베이스 사이의 데이터를 쉽게 관리할 수 있도록 도와주는 ORM(Object-Relational Mapping) 프레임워크입니다. JPA를 사용하여 데이터베이스와 상호 작용할 때, 외래키(Foreign Key) 설정 방식과 다른 테이블의 ID만을 저장하는 방식의 차이점, 장단점, 그리고 객체지향적인 설계와 ORM 방식에 미치는 영향을 알아보겠습니다.외래키 설정 방식외래키 설정 방식은 JPA 엔티티에서 다른 엔티티와의 관계를 나타내기 위해 외래키를 사용하는 방법입니다. 이를 통해 데이터베이스의 참조 무결성을 유지할 수 있습니다.@Entitypublic class Order { @Id @GeneratedValue ..

Develop/Java 2024.08.03

[Java] @RequiredArgsConstructor와 @NoArgsConstructor : 생성자를 자동으로 관리하는 방법

Java 애플리케이션을 개발하면서 클래스의 생성자를 정의하는 것은 매우 흔한 일입니다. 그러나 반복적인 생성자 작성은 귀찮고 번거로울 수 있습니다. 이를 해결하기 위해 Lombok 라이브러리는 생성자를 자동으로 생성해주는 편리한 어노테이션을 제공합니다.오늘은 그중에서도 @RequiredArgsConstructor와 @NoArgsConstructor에 대해 자세히 살펴보겠습니다.@NoArgsConstructor: 기본 생성자 자동 생성정의@NoArgsConstructor는 매개변수가 없는 기본 생성자를 자동으로 생성해주는 Lombok 어노테이션입니다. 이 어노테이션을 사용하면 클래스에 기본 생성자를 직접 작성할 필요가 없습니다. 사용 예시import lombok.NoArgsConstructor;@NoArg..

Develop/Java 2024.07.31

[SwiftUI] 상태 관리: @State, @Binding, @StateObject, 그리고 @EnvironmentObject

SwiftUI에서 상태 관리는 애플리케이션의 데이터 흐름과 뷰 업데이트를 효과적으로 처리하는 데 중요한 역할을 합니다. 올바른 상태 관리 도구를 사용하는 것은 코드의 가독성과 유지보수성을 높이는 데 필수적입니다.이번에는 @State, @Binding, @StateObject, 그리고 @EnvironmentObject의 사용 방법과 적절한 사용 시점을 다루겠습니다.@State와 @Binding@State@State는 SwiftUI에서 뷰의 내부 상태를 관리하는 데 사용됩니다. 이 상태는 해당 뷰 내에서만 사용되며, 상태가 변경될 때마다 뷰가 자동으로 다시 렌더링됩니다.struct CounterView: View { @State private var count = 0 var body: some V..

Develop/SwiftUI 2024.07.16

[Java] 인터페이스(Interface)와 구현 클래스의 상속 관계

자바에서 인터페이스와 클래스 간의 상속 관계는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 이를 이해하면 더 효율적이고 유연한 코드를 작성할 수 있습니다. 이번 글에서는 인터페이스와 구현 클래스 간의 상속 관계를 예제를 통해 자세히 살펴보겠습니다.인터페이스와 클래스의 기본 개념인터페이스는 클래스가 구현해야 하는 메서드의 시그니처(메서드 이름, 반환 타입, 매개 변수 목록)를 정의합니다. 인터페이스는 메서드의 구체적인 구현은 포함하지 않으며, interface 키워드를 사용하여 정의합니다. 클래스는 인터페이스를 구현할 때 implements 키워드를 사용합니다. 인터페이스를 구현하는 클래스는 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 합니다.인터페이스 정의와 구현먼저, 하나의 인터페이스를..

Develop/Java 2024.07.13

[Java] Getter와 Setter : 편리함 속의 함정

자바를 써본 분들이라면 Getter와 Setter 메서드를 쉽게 접할 수 있을 것입니다. 이들은 매우 편리한 메서드지만, 그만큼 치명적인 단점도 가지고 있습니다. 이번 글에서는 Getter와 Setter의 기능과 그 단점에 대해 자세히 알아보겠습니다.Getter와 Setter 란Getter와 Setter는 객체 지향 프로그래밍에서 클래스의 필드 값을 읽거나 수정하기 위해 사용되는 메서드입니다. 이들은 클래스의 캡슐화를 유지하면서 외부 코드가 클래스의 속성에 접근하도록 합니다. GetterGetter는 클래스의 필드 값을 반환하는 메서드입니다. 일반적으로 메서드 이름은 get 접두사와 필드 이름을 조합하여 만듭니다.public class Person { private String name; pr..

Develop/Java 2024.07.08

[Java] Service Implement 와 Interface를 사용하는 이유

Java 프로젝트를 개발하다 보면 종종 Controller -> Service (로직처리) 구조가 아닌 Controller -> Service Interface -> Service Implement 구조를 사용하는 경우를 볼 수 있습니다. 이러한 구조가 왜 필요한지, 어떤 기준으로 이런 구조를 정하는지에 대한 궁금증을 풀어보겠습니다.왜 Service Interface와 Service Implement를 사용하는가?서비스 인터페이스와 구현체를 분리하는 패턴은 코드의 유연성과 유지보수성을 높이기 위한 설계 방식입니다. 이를 통해 얻을 수 있는 주요 이점은 다음과 같습니다. 1. 구현체의 교체 용이성인터페이스를 사용하면 언제든지 구현체를 변경할 수 있습니다. 예를 들어, UserService 인터페이스를 여러..

Develop/Java 2024.06.29

[Python] 큰 수의 법칙 (Greedy)

문제설명다양한 수로 이루어진 배열이 있을 때 주어진 수들을 m번 더하되 배열의 인덱스에 해당하는 수가 연속해서 k번을 초과하지 않고 가장 큰 수를 만드는 법칙을 '큰 수의 법칙' 으로 정의할때, 배열의 크기 n, 숫자가 더해지는 횟수 m, 그리고 k가 주어질 때 큰 수의 법칙에 따른 결과를 출력하시오. 입력조건첫째 줄에 n(2 둘째 줄에 n개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단, 각각의 자연수는 1 이상 10,000 이하의 수로 주어진다.입력으로 주어지는 k는 항상 m보다 작거나 같다 문제풀이우선 가장 먼저 알아채야 할 사항은 가장 큰 수를 k번 만큼 더한다음 이후 두번재 큰수를 한번만 더해주면 다시 첫번째 큰 수를 더해줄 수 있다. 따라서 몇개의 값을 입력받든 첫번째와, 두번째 큰..

Develop/Coding Test 2024.06.02

[Python] 거스름돈 _ 코딩 테스트 (Greedy)

문제 설명카운터에 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 있고 이 동전의 수는 무한히 존재한다.손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 주어야 할 돈 N은 항상 10의 배수이다. 문제 해설이 문제는 그리디 알고리즘을 이용하여 풀 수 있는 대표적인 문제이다.거슬러 주어야 할 동전의 최소 개수 이므로 가장 큰 단위의 거스름 돈 먼저 적용하여 작은 단위의 거스름돈으로 순차적으로 내려가면서 카운트를 세는 단순한 과정의 풀이방법을 적용하면 풀 수 있다. 문제 풀이# 거스름돈 입력 받기n = int(input("거스름돈 : "))# 받는 횟수 변수 선언count = 0# 거스름돈 타입 설정coin_type = [500, 100, ..

Develop/Coding Test 2024.06.01

[JAVA] 제네릭 메소드(Generic Method)

보통 메소드들은 리턴 타입을 가지고 있다.어떤 타입을 리턴하는지 표시해야 하며 해당 타입으로 리턴하지 않는다면 에러를 발생하게 된다. 하지만 같은 로직을 수행하지만 경우에 따라 타입이 달라지는 경우 등 리턴 타입이 고정되어 있지 않았으면 하는 일이 발생하곤 한다.이럴경우를 위해 제네릭 메소드(Generic Method)가 존재하며 이에 대해 간략하게 알아보고자 한다. 제네릭 메소드(Generic Method)란?제네릭 메소드란 클래스나 메소드를 정의할때 타입을 나중에 지정할 수 있게 해주는 기능이다.이는 코드의 재사용성과 타입의 안정성을 높일 수 있게 된다. 사용 예시 이러한 기능을 이용해서 API 호출시 유용하게 사용할 수 있었다.API는 각각 requestBody와 response의 구성이 다르기 때..

Develop/Java 2024.05.19