분류 전체보기133 조합, 위임이 상속을 대체하는가? 상속 → “이 객체는 이런 기능을 갖는다”조합 → “이 객체는 저 객체를 사용해서 일한다”위임 → “이 객체는 저 객체에게 일을 시킨다” 상속은 컴파일 시점에 부모와 자식의 관계가 결정되기 때문에 결합도가 높다. 조합과 위임을 통해 유연성을 높이고, 조합과 위임의 하드코딩으로 인해 발생되는 경직성을 해결하기 위해 의존성 주입이 도입되었다. 꼬리질문 1:상속은 곧 확장이기도 하다. 그리고 부모 클래스의 멤버 변수 및 메서드에 접근할 수 있다는 것이지 반드시 써야 되는 것도 아니다. 얼마든지 자식 클래스만의 멤버를 만들어서 자유롭게 확장할 수 있는데 왜 유연하지 못하다고 하는 것일까?꼬리답변 1:컴파일 타임 확장과 런타임 확장의 차이이다.컴파일 타임에 상속과 조합은 아래와 같이 결정된다:상속 → “이 객체는.. 2025. 6. 6. try-catch문에 대하여 시스템에 회복탄력성을 제공하는 메커니즘 Q. try catch문의 정확한 기능은 무엇인가? 흔히 catch문의 기능을 언급할 때 예외를 잡는다고 표현한다. 그러나, 설명이 불충분한 측면이 있다. 왜 잡느냐가 빠져있기 때문이다. 나는 보통 try-catch문을 이용할 때 catch문에서 예외가 잡히면 debugprint를 터미널에 찍는 식으로 이용해왔다. 그러나 이것은 예외 알림에 가깝지 예외 처리에 해당하지 않는다. 발생한 예외에 대한 실질적 대비책이 아니기 때문이다. 만약 catch문이 예외 알림의 기능만 했다면 catch문을 사실상 또 하나의 메소드처럼 쓸 수 있는 수준의 자유도를 주지는 않았을 것이다.정상 흐름에서 벗어난 동작에 대한 처리를 마련함으로써 다시 프로그램이 정상적으로 동작할 수 있도록 .. 2025. 5. 28. 왜 extends 뒤에는 클래스가 단 하나만 존재할 수 있고, implements 뒤에는 인터페이스가 여러개 존재할 수 있는가? 클래스로부터는 구현을 물려받고, 인터페이스로부터는 구현을 물려받지 않기 때문이다.구현을 물려받는다는 것은 곧 지시사항을 물려받는 것이다.여러 명의 부모로부터 지시사항을 물려받는다면 자식의 입장으로서는 어떤 부모의 지시사항을 따라야 할지 알 수가 없다. class A { print() { System.out.println("A"); }}class B { print() { System.out.println("B"); }}class C extends A, B { // 2025. 5. 28. 객체가 같다는 것은 정확히 어떤 의미인가? 두 가지 측면에서 이야기할 수 있다.동일성 → heap 영역에 할당된 객체의 주소값이 서로 같다.동등성 → 각 객체가 갖고 있는 데이터가 서로 같다. 꼬리질문 1:그렇다면 아래 코드의 결과를 예상해 보시오.String str1 = "Hello";String str2 = "Hello";String str3 = new String("Hello");System.out.println(str1 == str2);System.out.println(str1 == str3);System.out.println(str1.equals(str3));꼬리답변1:true true true로 예상하였으나 결과는 true false true가 나왔음 틀린 이유:“무엇을 비교하는지”에 대한 이해가 없었음. c++에서는 연산자 오버로딩을.. 2025. 5. 28. Garbage collection heap 영역에 할당된 객체 중 필요 없어진 것을 메모리에서 해제하는 것필요 없어진 객체란 정확히 무엇을 의미하는가?//for문이 1번 반복될 때마다 이전 NewObject 객체는 참조를 상실하게 된다. NewObject obj;for (int i = 0; i → for문이 1번 반복될 때마다 heap 영역 바깥으로의 도달 능력(reachability)을 상실한 객체가 생겨난다. 식별한 제거 대상 객체를 어떻게 제거하는가?Mark and Sweep: 총 3단계로 이루어져 있다.Mark → 전역변수, 현재 스택의 지역변수로부터 연결된 참조 변수들을 찾아내어 마킹Sweep → 마킹되지 않은 객체들을 heap에서 제거Compaction → 파편화된 객체들을 다시 정리 꼬리 질문 1:왜 Compaction 과.. 2025. 5. 28. 형변환이란? 데이터를 바라보는 관점을 바꾸는 행위→ 똑같은 숫자 1이라도 int에 넣으면 정량적인 숫자 1을 의미하게 되고, bool에 넣으면 논리적 참을 의미하게 됨.→ 똑같은 숫자 65라도 int에 넣으면 정량적인 숫자 65를 의미하게 되고, char에 넣으면 대문자 A를 의미하게 됨. 기본 자료형에서의 형변환은 위의 정의만으로도 충분히 이해가 되지만 참조 자료형 사이의 형변환은 충분하지 못한 측면이 있다. 왜냐하면, 참조 자료형 사이의 형변환은 heap 영역에 할당된 인스턴스 자체의 크기를 바꾸는 게 아니라 stack 영역에 할당된 인스턴스의 참조에 관한 이야기이기 때문이다. 이러한 측면에서, 형변환을 참조 자료형에 국한하여 다시 정의하자면 아래와 같다:모호성의 범위를 조절하는 행위 upcasting: 구체적인.. 2025. 5. 28. [꿀팁] 디지털 노가다에서 해방되기 이런저런 바쁜 일이 많아서 한동안 블로그를 놓고 있었는데세상에 이 기능을 이제까지 모르고 있었다니 하는 생각이 들어 기록으로 남긴다. 1. Auto code formatter자동으로 코드를 보기 좋게 정리해준다. 먼저 좌측 하단 톱니바퀴 아이콘을 클릭하고 Settings 항목으로 들어간다.Settings 페이지에서 format을 검색하면 이렇게 Dart>Editor 목록이 나오는데 여기로 들어가서 Enable Sdk Formatter를 눌러주면 된다.dart 파일이 저장될 때마다 formatting을 해준다는데 나는 Auto save 기능을 쓰고 있어서자동으로 되는 게 아닌가 싶었는데 Cmd + S를 꼭 눌러줘야 한다. 2. yaml extensionpubspec.yaml 파일은 플러터에서 매우 중요한.. 2024. 7. 5. 일, 공부 모두 더 잘 할 수 있는 방법은 없을까? 일을 할 때나 공부를 할 때나 나에게는 공통적인 특징이 있다. 바로 항상 극도의 불안감을 수반한다는 것이다. 내가 100만큼의 능력을 갖고 있다고 가정하면 그 중 거의 절반 이상은 이 불안감을 핸들링하는 데 소모될 정도다. 아주 간단한 일 하나를 처리를 해놓고도 이게 잘 됐나 몇 번을 들여다보느라 굳이 쓰지 않아도 될 시간과 에너지를 낭비한다. 그래서 최근에는 불안감은 성과를 내는 데 있어 별다른 도움이 되지 않는다고 나 스스로에게 되뇌이고, 오직 현재 지금 이 순간에만 집중해서 차근차근 일처리를 해나가는 방식을 연습하고 있는데 과거에 비해서는 상당히 효과를 보았고 이제는 한 30 정도의 능력만 불안감을 핸들링하는 데 사용하면 되는 것 같다. 그런데, [함께 자라기, 애자일로 가는 길]이라는 책을 읽으면.. 2024. 1. 29. [42seoul]스터디를 하면서 느낀점 스터디를 하기 전, 친구들과 공부를 하다 보면 꼭 발생하는 현상이 있었다. 내가 누군가에게 질문을 하면 그 누군가는 의문에 빠진다. 그래서 또 다른 누군가를 불러오면 다시 그 누군가도 또 의문에 빠진다. 이런 알고리즘으로 같이 공부하던 사람들이 모두 모이게 되면 내 코드를 갖고 치열한 토론회가 열린다. 그런데 이 코드를 제일 잘 아는 사람은 나니까 결국엔 나에게로 모든 질문이 도착하는데 사람들이 하도 많이 모여있다 보니 나도 헷갈려서 결국 그 누구도 이해할 수 없는 코드가 되어버리고 그 코드는 완전히 버린 다음 나는 다시 시작했다. 이런 점에 대해서는 사실 별 생각이 없었다. 그냥 내가 저 친구들보다 훨씬 실력이 못 미치니까 자꾸 이런 짜파게티 코드가 탄생하는구나 하는 생각이었고 막연히 열심히 하면 나아.. 2024. 1. 16. 문제가 무엇인지 정확히 파악하는 것이 가장 중요하다. 카페알바를 하고 나면 오른쪽 무릎에 알수없는 불편감이 들어 너무 불편했다. 마감알바라서 알바를 마치고 바로 집에 가서 자려고 하면 무릎이 너무 불편해서 잠을 설치기 일쑤였다. 일주일에 두 번 알바를 하는데 일주일에 2번은 무조건 제시간에 잠을 잘 수가 없는 상황이 발생해버리는 것이다. 그래서 한번 원인이 뭔지 곰곰이 생각해봤다. 내가 오른쪽으로 골반이 틀어져 있어 오른쪽 다리에 과도하게 부하가 실리는 게 문제라고 생각하고 골반교정을 올해 또하나의 목표로 잡았다. 그런데 불현듯 생각해보니 이 불편감은 항상 오른쪽 무릎이 과신전 그러니까 지나치게 펴지는 느낌이 들 때 발생했다. 자세요정 유튜브를 찾아보니 이에 대한 해결책으로 대퇴근막장근 마사지를 제시하고 있었고 대퇴근막장근 마사지를 한 1분 정도 하고 나니.. 2024. 1. 11. 이전 1 2 3 4 ··· 14 다음