Back-End34 [객체지향의 사실과 오해] 01. 협력하는 객체들의 공동체 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 협력하는 사람들 역할 손님 : 커피 주문 (손님 역할) 캐시어 : 주문 접수 (캐시어 역할) 바리스타 : 커피 제조 (바리스타 역할) 책임 손님 : 커피 주문 책임 캐시어 : 주문 접수 책임 바리스타 : 커피 제조 책임 협력 : 커피 주문을 위해 모든 사람들이 맡은 역할과 책임을 다하며 협력 협력 요청 요청은 연쇄적으로 발생한다. 응답 요청의 방향과 반대 방향으로 연쇄적으로 전달된다. public class Customer { private final Cashier cashier = new Cashier(); public Coffee order(CoffeeMenu menu) { return cashier.takeOr.. 2022. 5. 26. Unmodifiable Collection? Collection.copyOf? 이 글은 전반적으로 컬렉션의 복사 방법을 정리해봅시다! (unmodifiable view / list) 를 참고하였습니다. 더 자세한 내용을 원하시면 리차드님 블로그를 방문해주세요! 좋은 글이 넘쳐납니다!! 뭐가 다른거지? 우리는 주로 외부와 내부에서 주소값을 공유하는 인스턴스의 관계를 끊어주기 위해서 방어적 복사를 사용한다. (불변 유지) 또한, 외부로 값을 노출시킬 때도 관계를 끊어주기 위해서 복사본을 반환해준다. 이 때 사용되는 것이 주로 Unmodifiable Collection와 Collection.copyOf이다. 주로 Unmodifiable Collection을 사용했는 데 인터넷을 보다보면 Collection.copyOf을 사용하는 글도 많이 볼 수 있었다. 과연 무엇이 다르고 언제 써야하.. 2022. 4. 27. 7주차 - 패키지 목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 클래스의 묶음 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리 할 수 있다. 패키지 안에는 같은 이름의 클래스를 사용할 수 없으며 패키지가 다르면 상관없다. 패키지명은 관례에 따라 소문자로 작성한다. 사실 클래스의 실제 이름은 패키지명을 포함한 것이다. (String 클래스 -> java.lang.String) 이를 FQCN(Fully Qualified Class Name) 라고 한다. 클래스가 물리적으로 하나의 클래스파일(... 2022. 4. 5. 6주차 - 상속 목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속의 정의와 장점 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속을 통해서 클래스를 작성하면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여된다. 자바에서의 상속은 extends 키워드를 통해 구현할 수 있다. class Parent {} class Child .. 2022. 3. 31. Object 클래스 Object 클래스 자바의 최상위 클래스 Object클래스는 모든 클래스의 최고 조상이기 때문에 Oject클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object클래스의 멤버 Object클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다. 이 메서드들은 모든 인스턴스가 가져야 할 기본적인 것들이다. equals(Object obj) ==연산 결과 반환 ( 주소 값 비교 ) Overriding 목적 : 물리적으로 다른 메모리에 위치하는 객체여도 논리적으로 동일함을 구현하기 위해 public class Number { private final int value; public Number(int value) { this.value = value; } public static void mai.. 2022. 3. 31. Git 정리 분산 버전 관리 시스템 버전 관리란 게임에서의 세이브포인트 같은 느낌이다. 버전 관리 없이 개발한다는 것은 세이브 없이 게임을 하는 것과 마찬가지일 것이다. 만약 두 명의 개발자가 하나의 서비스를 만드는 데 버전 관리가 없다면 이메일로 보내서 합친다거나 백업본을 만들어둬야 한다 거나 매우 귀찮게 될 것이다. 버전 관리 시스템 : Git 개발을 할 때 원하는 시점마다 깃발을 꽂고(버전을 만들고) 이들 간에 자유롭게 돌아다닐 수 있다. 내가 만든 버전 뿐만 아니라 동료가 만든 버전으로 이동할 수 있고, 동료와 내 버전을 비교해서 최신본으로 코드를 업데이트를 할 수 있다. Git은 CLI, CUI 두가지 방법으로 사용 가능하다. Git, Git Bash 터미널에서 git을 입력시에 위와 같은 커맨드가 나와야 .. 2022. 3. 29. 이전 1 2 3 4 5 6 다음