반응형 분류 전체보기344 [Java] 인터페이스를 사용하자! 자바는 다중 구현을 위해 인터페이스, 추상 클래스 기능을 제공한다. 그러면 어느 것을 사용하는게 더 좋을지 한번 고민해보자! 🤗 인터페이스의 장점 ❗ 자유로운 추가 자바는 단일 상속이 조건이다. 이러한 관점에서 추상 클래스 방식은 새로운 타입을 정의하는 데 커다란 제약이다. 예를 들어 개발 도구는 컴퓨터, 안드로이드 개발자에게는 삼성폰, IOS 개발자에게는 아이폰 등으로 나눌 수 있다. 그렇다면 'Computer ⊂ DevelopmentTool'로 표현할 수 있다. 이번에는 게임기를 생각해보자. 게임기에는 컴퓨터, 스위치, 닌텐도, 플스 등등 여러가지가 있다. 그렇다면 'Computer ⊂ GameMachine'로 볼 수도 있겠다. 그런데 위에서 말했다시피 자바는 단일 상속이 조건이라 아래와 같은 표현이.. 2022. 3. 18. [우테코] 블랙잭 미션 1단계 학습 로그 목차 1. GitHub 저장소 2. 구현 기능 목록 3. 새로운 도전 4. 생각하기 5. 회고 6. 앞으로 할 일 1. GitHub 저장소 Repository: https://github.com/yeon-06/java-blackjack/tree/step1 Pull Request: https://github.com/woowacourse/java-blackjack/pull/220 2. 구현 기능 목록 참여할 사람의 이름 입력 쉼표 기준으로 분리 (e) 빈 값, 공백 불가 (e) 중복 불가 카드 분배 딜러, 참가자에게 카드 2장씩 분배 딜러의 카드 1장 출력 참가자의 카드 2장 출력 참가자의 카드 합이 21이면 게임 종료 참가자 카드 추가 분배 카드 합이 21 이상인 참가자는 턴 종료 참가자 별로 한장의 카드.. 2022. 3. 15. [Java] Inheritance(상속) vs Composition(조합) 목차 상속; Inheritance 조합; Composition 질문 사항 상속보다는 컴포지션을 써야한다? 상속 설계 시 hook을 주의하자. 상속용 클래스의 생성자에서 재정의 가능한 메서드 호출 금지 Cloneable과 Serializable 인터페이스를 조심해라? 상속을 금지하는 방법 도우미 메소드 활용하기 ✨ 상속; Inheritance 먼저 상속에 대해서 알아보겠다. 상속은 코드 재사용을 쉽게 해주지만 잘못 사용하면 오류나기 쉽상이다. 또한 메소드 호출과 달리 캡슐화를 깨뜨린다. 상위 클래스의 변경이 하위 클래스까지 영향을 줄 수 있기 때문이다. 상속용 클래스는 재정의 가능한 메소드들을 내부적으로 어떻게 이용하는지, 어떠한 상황에서 호출할 수 있는지 등을 문서로 남겨야 한다. 🔻 API 문서에 대해.. 2022. 3. 14. [Java] 중첩 클래스의 종류 (feat. 멤버 클래스는 static으로!) 😏 서론 지난 번 클래스와 멤버의 접근 권한을 최소화해야 하는 이유에 대해 공부해보았다. 한 클래스에서만 사용하는 클래스는 private static으로 중첩시키라는 말이 있었는데 이 이유에 대해 자세히 알아보자. ❓ 중첩 클래스란? : 다른 클래스 안에 정의된 클래스 자신을 감싼 바깥 클래스에서만 사용되어야 함 (그 외 쓰임새가 생기면 톱 레벨 클래스로 생성) 컴파일 시 바깥클래스$중첩클래스.class 형태로 컴파일 됨 public class Animal { // 바깥 클래스, 가장 바깥에 있으므로 톱 레벨 클래스 // ... public class Kinds { // 중첩 클래스 // ... } } 📚 중첩 클래스의 종류 정적 멤버 클래스 비정적 멤버 클래스 익명 클래스 지역 클래스 정적 멤버 클래스.. 2022. 3. 14. [Spring Security] 초간단 로그인 만들기 이전부터 아주 천천히 진행하고 있던 토이 프로젝트의 로그인 기능을 드디어 구현했다. 이번 달 ~ 다음 달 안에는 종료되어야 마음이 편할텐데 가능하..겠지..?😂 본 포스팅에서는 복잡한 로직 다 빼고 Spring Security를 적용만 해보는 과정을 담았다. 1. 준비 🔻 이전 글 참고: https://yeonyeon.tistory.com/185 [Spring Security] 스프링 시큐리티 간단 적용기 본 글은 토이 프로젝트에 Spring Security를 적용하는 과정에 대해 포스팅한다. Spring Security에 관한 디테일한 이론 지식이나 동작 원리 등에 대해서는 생략한다. 1. 개요 Spring Security : J.. yeonyeon.tistory.com 2. 동작 방식 먼저 Sprin.. 2022. 3. 7. [Java] 접근 권한을 최소화해야 하는 이유 이 포스팅에 들어가기 앞서 잘 설계된 컴포넌트란 무엇인가?에 대해서 생각해보도록 하자. 우리가 컴포넌트를 설계할 때 중요한 것이 뭘까? 어떤 컴포넌트를 잘 설계되었다고 표현할까? ✨ 잘 설계된 컴포넌트 클래스 내부 데이터와 구현 정보를 외부로부터 잘 숨긴 컴포넌트 서로의 내부 동작 방식을 모른채 API를 통해 다른 컴포넌트와 소통 👉 결국은 정보 은닉, 캡슐화가 중요한 포인트라고 볼 수 있다. 🔻 정보 은닉이란? 더보기 : 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것 정보 은닉으로 인한 장점 여러 컴포넌트를 병렬로 개발 가능 👉 시스템 개발 속도↑ 각 컴포넌트를 더 빨리 파악할 수 있고 교체 부담도 적음 👉 시스템 관리 비용 ↓ 성능 최적화에 도움 소프트웨어의 재사용성 ↑.. 2022. 3. 6. [책 후기] 함께 자라기 함께 자라기 애자일로 가는 길 인사이트 출판사 / 김창준 지음 http://www.yes24.com/Product/Goods/67350256 함께 자라기 - YES24 ‘함께’는 협력을 말하고, ‘자라기’는 학습을 말한다. 무엇이건 실제 바깥세상(야생)에 임팩트를 남기려면 혼자 힘으로만 되는 게 없다. 함께 해야 한다. 주변 사람들과 함께. 매일 부대끼는 www.yes24.com 게더 타운에 있다가 운 좋게도 우테코 1기 분과 만나게 되었고 책까지 나눔 받게 되었다 (베디 감사해요😆) 책과 거리가 먼 나였기 때문에 얇고 내용이 어렵지 않은 책으로 먼저 독서 습관을 쌓으려고 했다. 그리고 내 예상대로 부담없이 읽을 수 있었다.😊 학습 방법에 대해서는 큰 고민을 하지 않았던 나인데 내 상태를 쏙 뽑아놓듯 글.. 2022. 3. 5. [우테코] 로또 미션 2단계 학습 로그 목차 1. GitHub 저장소 2. 새로운 요구사항 3. 리팩토링 4. 생각하기 1. GitHub 저장소 step 1(리팩토링 전): https://github.com/yeon-06/java-lotto/tree/step1 step 2(리팩토링 후): https://github.com/yeon-06/java-lotto/tree/step2 Pull Request: https://github.com/woowacourse/java-lotto/pull/454 2. 새로운 요구사항 수동 로또 (e) 구입한 금액보다 많이 구매했는지 확인 수동으로 구매할 로또 개수 입력 수동 로또 번호 입력 3. 리팩토링 3-1. String.format() 사용 int MIN = 1; int MAX = 45; // AS-IS Str.. 2022. 3. 5. [Java] Predicate란? 🤔 서론 우테코 오늘자 강의에서 BiPredicate라는 개념을 처음 들어보았다. Predicate란 무엇인지, 언제 사용하는 것인지 그리고 내 코드에 적용하는 과정까지를 담아본다. 생각보다 어렵지 않다. 설명 안읽고 예제 코드만 봐도 바로 이해할 수 있을듯 📚 Predicate란? argument를 받아 boolean 값을 반환하는 함수형 인터페이스 functional method: test() 🔻 함수형 인터페이스란? 더보기 = SAM interface; Single Abstract Method Interface : 1개의 추상 메소드를 갖고 있는 인터페이스 ➕ default나 static 메소드의 제한 X @FunctionalInterface 어노테이션 사용 ➕ 없어도 동작하지만 함수형 인터페이스 .. 2022. 3. 4. 이전 1 ··· 14 15 16 17 18 19 20 ··· 39 다음 반응형