KPT 회고Keep (지속할 것)레벨 1에서 수행했던 것들 중 레벨 2에서도 유지하고 싶은 것들을 적어보았다.특히 스트레스를 주기적으로 해소하는 것을 꼭 유지하고 싶다. 오래 달리기 위해서는 밸런스를 잘 맞춰 생활해야한다. Problem (해결할 것)레벨 1을 수행하며 아쉬웠던 부분을 작성해보았다. 하지 못한 것들에 대한 후회가 많이 남았다. Try (시도할 것)Problem에서 파악했던 문제들에 대한 나만의 해결 방법을 작성해보았다. 레벨 2에서는 덜 후회하는 하루하루를 보내고 싶다. 감정 회고 (그래프)하드스킬은 분홍색, 소프트스킬은 파란색 메모지로 감정 키워드를 작성하고, 성장 점수를 그래프로 그렸다. 레벨 1 그래프 OT, 연극새로운 사람들과 만나 이야기하면서 기대와 설렘이 컸다. 연극을 준비하..
객체지향객체의 책임객체란?상태와 행동을 함께 지닌 실체스스로 자기 자신을 책임지는 자율적인 객체상태 : 데이터(가변 필드, 불변 필드)과거에 얽매이지 않고, 현재를 기반으로 객체의 행동 방식을 이해할 수 있다.상태를 가지지 않은 객체는 객체지향적인가? 답변 ) 캡슐화, 추상화를 통해 다형성은 가능하지만 객체지향의 장점을 제대로 활용하지 못한 것이다.객체지향은 상태와 행동을 함께 캡슐화하여 변화에 유연하게 대응할 수 있어야 하기 때문이다.행동 : 메서드객체가 취하는 행동은 상태를 변화시킨다.협력 : 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다.각 객체는 협력 내에서 정해진 역할(책임의 집합)을 수행한다.객체는 다른 객체와 협력하기 위해 메세지를 전송하고, 메세지를 수신한 객체는 메세지를 처리..
장기 미션 회고장기 도메인 설명기물 종류팀한나라, 초나라가 존재한다.승리 방법먼저 왕을 잡으면 승리한다.왕을 잡지 못하는 경우 점수로 판단한다. 리팩토링 단계추상 클래스 ⮕ 합성 ⮕ enum 1. 추상 클래스Piece : 움직이는 방식 정의 추상 클래스를 이용해 구현한 이유기물이 자신이 속한 팀 정보와 기물 종류를 알아야 하기 때문에 모든 기물에 대해 공통 필드가 생기게 되었다.따라서 중복을 제거하기 위해 추상 클래스로 상속했다.public abstract class Piece { private final PieceType pieceType; private final Team team; public Piece(PieceType pieceType, Team team) { thi..
OOP, 제네릭과 타입 소거OOP클래스와 객체의 차이클래스는 객체들의 분류, 집합, 설계도(blueprint)이다.반면에 객체는 클래스의 인스턴스이며, 런타임에 생성된다.객체 지향에서 객체들의 공통적 특성을 모아 추상화한 결과가 클래스이다. OOP의 주요 개념캡슐화캡슐화는 접근제어자(public, protected, default, private)를 이용해 객체의 정보를 은닉하는 것을 말한다.객체의 내부 데이터와 내부 구현을 외부 컴포넌트로부터 잘 숨기면, API를 통해서만 다른 컴포넌트와 소통할 수 있기 때문에 내부 구현 방식이 바뀌어도 외부 컴포넌트는 영향을 받지 않는다. 또한 컴포넌트 각각을 독립적으로 테스트할 수 있다. 상속상위 클래스와 하위 클래스가 존재하며, 하위 클래스로 갈수록 특성이 추가되..
블랙잭 미션 회고상속 vs 합성상속부모 클래스가 제공하는 모든 인터페이스를 자식 클래스가 물려받는다.단순히 메서드나 인스턴스 변수를 재사용하는 것이 아니다.외부 객체는 자식 클래스를 부모 클래스와 같은 타입으로 간주할 수 있다.상속의 단점하위 클래스가 부모 클래스의 내부 구조를 잘 알고 있어야 한다. (캡슐화 위반)부모 클래스와 자식 클래스 사이의 관계를 컴파일 시점에 결정하기 때문에 실행 시점에 객체의 종류를 변경하기 어렵다. (설계가 유연하지 않다.) 합성클래스가 다른 클래스의 인스턴스를 멤버 변수로 포함하여 그 기능을 활용하는 방식위임 : 포함된 객체의 메서드를 호출하여 기능을 수행한다. 합성과 상속공통점 : 모두 코드를 재사용할 수 있다.상속은 부모 클래스와 자식 클래스의 코드를 컴파일 시점에 강..
출석부 미션 회고10줄 요구사항10줄 제한 요구사항을 지키기 위해 충분히 명확함에도 불구하고 메서드를 분리하는 경우가 있었다. 페어와 함께 이 메서드를 분리하면 좋을지, 10줄 제한 요구사항을 지키지 않을지 토론했다. private void process(final Crews crews, final Command command) { if (command.equals(Command.CHECK_ATTENDANCE)) { checkAttendance(crews); } if (command.equals(Command.MODIFY_ATTENDANCE)) { modifyAttendance(crews); } i..
로또 미션 회고페어프로그래밍페어 프로그래밍을 진행하며 페어의 시야에서 문제를 바라보고, 부족한 부분을 깨달으면서 배울 수 있었다.그런데 의견 조율을 하다보니 혼자 개발할 때보다 같은 기능을 구현할 때 시간이 훨씬 많이 걸리게 되었다.그래서 페어 프로그래밍이 성장에는 도움이 되지만, 실제 프로덕트를 만들 때에도 도움이 될지 궁금했다. 따라서 리뷰어에게 실무에서도 페어 프로그래밍을 진행해보신 적이 있는지, 페어 프로그래밍에 시간이 많이 걸리는 부분에 대해 물어보았다. 실무에서도 페어프로그래밍을 진행한다고 하셔서 놀랐다. 페어 프로그래밍은 시간이 많이 걸리는 작업이지만, 버그나 장애발생률이 현저히 감소하는 장점이 있다. 또한 페어의 성향과 자신의 성향이 얼마나 잘 맞느냐도 중요한데, 성향 차이로 인해 페어 프..
MVC 패턴, 서비스가 콘솔 애플리케이션에서 필요한가?MVC 패턴Model : 애플리케이션의 데이터와 비즈니스 로직 담당View : 사용자에게 보여지는 부분 (데이터의 시각화)Controller : Model로부터 데이터를 받아 View로 전달하는 작업 수행 콘솔 애플리케이션 (블랙잭)화면 요구사항게임에 참여할 사람의 이름을 입력하세요.(쉼표 기준으로 분리)pobi,jason딜러와 pobi, jason에게 2장을 나누었습니다.딜러카드: 3다이아몬드pobi카드: 2하트, 8스페이드jason카드: 7클로버, K스페이드pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)ypobi카드: 2하트, 8스페이드, A클로버pobi는 한장의 카드를 더 받겠습니까?(예는 y, 아니오는 n)njason는 한장의..