나를 기록하다
article thumbnail
[Java] 익명클래스, 람다와 스트림
Java 2023. 10. 11. 23:34

익명 클래스 이름이 없는 클래스 내부 클래스 중 특별한 클래스 1회성 코드. 해당 객체 하나만을 위한 클래스 [예시] 카페에서 커피 주문. 특별한 손님을 위한 익명 클래스 public class Main { public static void main(String[] args) { //익명 클래스 Coffee c1 = new Coffee(); c1.order("아메리카노"); System.out.println("------------------------"); Coffee c2 = new Coffee(); c2.order("카페라떼"); System.out.println("------------------------"); //굉장히 친한 친구 방문 Coffee specialCoffee = new Coffe..

article thumbnail
[Java] 제네릭스(Generics)
Java 2023. 10. 11. 15:00

제네릭스(Generics) 정의 다양한 타입의 객체를 지원하는 클래스나 인터페이스 또는 메서드를 정의하는 방법 똑같은 동작을 하는 클래스나 메서드를 여러 번 만들 필요 없이 딱 한 번만 정의한 후 여러 타입에 대해서 지원할 수 있도록 해주는 것 [예시] 제네릭스 사용 전 public class Main { public static void main(String[] args) { //제네릭스 int[] iArray = {1, 2, 3, 4, 5}; double[] dArray = {1.0, 2.0, 3.0, 4.0, 5.0}; String[] sArray = {"A", "B", "C", "D", "E"}; printIntArray(iArray); printDoubleArray(dArray); printSt..

article thumbnail
[객체지향의 사실과 오해] 5장. 책임과 메시지
Review/Book 2023. 10. 7. 00:30

객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 따라서 자율적인 객체란 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체를 의미한다. 자율적인 책임 책임이 자율적이어야 하는 이유 객체에게 할당되는 책임이 자율적이어야 한다. 책임이 자율적이지 않다면 객체가 아무리 발버둥친다고 하더라도 자율적으로 책임을 수행하기 어렵다. [예시] 첫 번째 협력 모자 장수는 왕에게 증언할 책임은 있지만 증언을 위한 구체적인 방법이나 절차에 대해서는 최대한의 자유를 누린다. 두 번째 협력 상세한 수준의 책임은 증언이라는 협력의 최종 목표는 만족시킬지 몰라도 모자 장수가 누려야 하는 선택의 자유를 훼손한다. 결과적으로 두 ..

article thumbnail
[객체지향의 사실과 오해] 4장. 역할, 책임, 협력
Review/Book 2023. 10. 6. 00:30

훌륭한 객체지향 설계란 겉모습은 아름답지만 협력자들을 무시하는 오만한 객체를 창조하는 것이 아니라 조화를 이루며 적극적으로 상호작용하는 협력적인 객체를 창조하는 것이다. 비록 그 객체를 따로 뗴어놓고 봤을 때는 겉모습이 다소 기묘하고 비합리적이더라도 말이다. 객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 협력 누가 파이를 훔쳤지? 앨리스가 재판장에 도착했을 때 하트 왕과 하트 여왕은 옥좌에 앉아 있었다. 그리고 주위에는 온갖 종류의 새와 짐승과 한 벌의 카드가 모여 있었으며 그들 앞에 파이를 훔쳤다는 혐의를 받고 있는 하트 잭이 사슬에 묶인 채 병사들의 감시를 받으며 서 있었다. 하트 잭의 옆에는 하얀 토끼가 한 손에는 트럼펫을, 다른 한 손에는 양피지 두루마리를 들고 서 있었다. 법정의 한 가운..

article thumbnail
[객체지향의 사실과 오해] 3장. 타입과 추상화
Review/Book 2023. 10. 5. 00:30

추상화를 통한 복잡성 극복 진정한 의미에서 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정이라고 할 수 있다. Root-Bernstein 추상화는 복잡한 현실을 단순화하기 위해 사용하는 인간의 가장 기본적인 인지 수단 추상화란? 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법 복잡도를 다루기 위한 추상화의 두 가지 차원 첫 번째 차원: 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것 두 번째 차원: 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것 모든 경우에 추상화의 목적은 복잡성을 이해하기 쉬운..

article thumbnail
[TIL-37/231002] 백준 4949 자바, 객체지향의 사실과 오해
TIL 2023. 10. 3. 02:11

9월 30일은 세미나를 보고 정리한 내용만 올리고 오랜만에 한국으로 돌아온 친구, 타지에서 일하는 친구들이 모두 부산에 모여서 친구들을 만났고, 10월 1일은 부모님과 함께 보냈다. 번아웃으로 조금 힘든 날들을 보내고 있었는데 오랜만에 공부를 잠깐 쉬어가면서 사람들을 만나니 다시 에너지를 얻은 기분이다. 역시 공부와 휴식이 조화를 이룰 때 공부도, 휴식도 잘할 수 있는 게 맞다. 오늘은 본가에 다녀와서 짧게나마 알고리즘 문제풀이와 객체지향의 사실과 오해를 읽고 정리했다. TIL-37 시작하겠다. 백준 4949 자바(Java) 균형잡힌 세상 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"..

profile on loading

Loading...