전체 글154 [React] 기초 JSX 사용법 react 코딩시 태그에 class를 주고 싶으면 function App() { return ( 개발 Blog ); } react 쓰는 이유: 데이터 바인딩이 쉽기 때문 데이터 바인딩: 서버에서 가져온 데이터를 HTML에 넣는 작업 데이터 바인딩 사용법: { 변수명, 함수 등 } function App() { let posts = '강남 고기 맛집'; return ( { posts } ); } style 사용법 style= {object 자료형으로 만든 스타일} 개발 Blog 참고: 코딩애플 유튜브 https://www.youtube.com/watch?v=FqnAFX9lQPQ&list=PLfLgtT94nNq1e6tr4sm2eH6ZZC2jcqGOy&index=3 2024. 3. 12. [객체지향과 디자인패턴] 상속의 단점 3가지, 보완점 상속의 단점 3가지는 다음과 같다. 첫번째 단점: 상위 클래스 변경의 어려움이 있다. 상위 클래스가 변경되면 하위 클래스도 영향을 받기에 하위 클래스도 수정해야하는 단점이 있다. 두번째 단점: 클래스의 불필요한 증가를 유발할 수 있다. 해당 기능이 필요해서 상속을 받아 클래스를 만들었다. 그런데 이후 또 다른 기능이 필요해서 상속 받은 클래스에서 다시 상속을 받는 클래스를 만들었다. 이는 계층 구조가 계속 깊어지며 유지보수가 어렵고 재사용의 장점인 상속의 장점도 없어지게 된다. 세번째 단점: 상속을 잘못 사용할 수 있다. 상속은 IS-A 관계일 때 사용하는 것이다. 같은 책임을 갖는 관계가 되야한다. 그런데 비슷한 책임을 갖고 있다고 사용했다가 IS-A 관계가 아니여서 원하지 않는 방식으로 동작할 수 있.. 2024. 2. 29. [객체지향과 디자인 패턴] 캡슐화를 하는 이유 캡슐화를 찾아보면 다음과 같이 말한다. 캡슐화란 내부 동작을 숨김으로 데이터 은닉화를 하는 것이다. 객체의 데이터(속성)와 그 데이터를 조작하는 메서드(함수)를 하나로 묶는 것이다. 캡슐화의 주요 목적은 객체 내부의 구현 세부 사항을 숨기고, 사용자에게는 해당 객체를 사용하는 데 필요한 인터페이스만을 제공하는 것이다. 그래서 왜 하는거지?? 캡슐화를 하는 이유는 구현 변경을 쉽게 하기 위함이다. 구현 변경을 쉽게 하기 위해 메서드를 만들어서 해당 메서드 안에서 작업을 처리하도록 한다. 따라서 요구사항 변화가 생겼을 때, 해당 메서드만 수정하면 된다. 캡슐화된 기능을 사용하는 코드에는 영향이 없게 되는 것이다. 참고: 2024. 2. 29. 가장 최근 Git 커밋 메시지 변경 가장 최근 커밋 메시지 변경 방법은 터미널에서 다음 명령어를 치고 변경 가능하다. git commit --amend 2024. 2. 10. [디자인 패턴] 전략(Strategy) 패턴 전략패턴은 (기능을 가지고 있는)컨텍스트에서 알고리즘(전략)을 별도로 분리하는 설계 방법이다. @Service public class TicketSeller { @Transactional public CreateReservationResponse createReservation(CreateReservationRequest dto) { //예약 가능한 좌석인지 확인 performanceSeatInfo.isReserve(ReserveStatus.ENABLE); } } 전략패턴에 집중하기 위해 어노테이션, 기타 코드는 생략하였다. TicketSeller는 공연에 대한 비즈니스 로직을 처리하는 서비스이다. @Entity public class PerformanceSeatInfo extends BaseEntity.. 2024. 2. 8. [이펙티브 자바] 생성자 대신 정적 팩터리 메서드 고려하라 2장 객체 생성과 파괴 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 예시) static을 통한 from 메서드를 통해 StudentDto를 생성하는 코드이다. public StudentDto(User student) { this.studentId = student.getId(); this.studentName = student.getName(); } public static StudentDto from(User student) { return new StudentDto(student); } 사용방법은 다음과 같다. StudentDto studentDto = StudentDto.from(student); 정적 팩터리 메서드를 적용하면 1. 메서드 이름을 통해 클래스 생성이 가능하다. 정해진 네이.. 2023. 12. 8. @NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유 엔터티 혹은 DTO 작성시 @NoArgsConstructor(access = AccessLevel.PROTECTED) 어노테이션을 많이 사용한다. @NoArgsConstructor에 AccessLevel설정으로 AccessLevel.PUBLIC, AccessLevel.PRIVATE, AccessLevel.PROTECTED가 있다. 왜 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 많이 쓰는 것일까? 문제점부터 알아보자. 문제점 @NoArgsConstructor(access = AccessLevel.PUBLIC): 1. 기본 생성자를 사용하는 방식을 여러 곳에서 생성이 가능하다.(BAD) 2. 객체 데이터에 빈값이 들어가는 일관성에 문제가 생길 수 있다. @N.. 2023. 10. 11. [프로그래머스 Java] 할인 행사 Lv.2 * 순서 - 문제 - 문제 설명 - 문제 목표 - 문제 풀이 - 최종 코드 - 포인트 - 다른 사람 코드 - 문제 - 문제 설명 원하는 제품, 원하는 제품의 개수가 있다. 마트에서 매일 한 제품을 할인하는데 하나씩만 구매할 수 있다. 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. 제품을 구매할 수 없으면 0을 return한다. - 문제 목표 10일 연속으로 할인 제품을 구매할 수 있는 날짜의 수를 구한다. - 문제 풀이 1. 원하는 제품과 원하는 제품의 수를 wMap에 저장한다. 2. 연속해서 할인 제품 구매할 수 있는 날짜를 세야하니 길이를 다음과 같이 정해서 for문을 돌린다. 3. 할인하는 제품과 개수를 dMap에 저장한다. 4. 할인하는 제품의 개수와 원하는 제품의 개수를 비교.. 2023. 9. 19. 이전 1 2 3 4 5 6 7 ··· 20 다음