묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨오브젝트 - 기초편
객체 지향 설계 원칙에 대한 질문입니다
안녕하세요!객체 지향에 대해 깊이 있게 학습할 수 있는 좋은 강의를 만들어주셔서 감사합니다. 이번에 완강했는데, 복습을 시작하기 전에 강의를 들으면서 생겼던 궁금증을 먼저 풀고 복습을 진행하면 좋을 것 같아 질문을 드립니다! '협력에 필요한 행동을 먼저 결정하고 행동에 적합한 객체를 나중에 선택하라'는 원칙이 궁금합니다. 협력을 설계하려면 협력할 대상이 필요할 텐데, 협력 대상인 객체는 나중에 선택한다면, 협력을 설계할 때는 구체적으로 무엇을 대상으로 삼아서 진행하게 되는걸까요? 요구사항 분석에서 도출된 도메인 개념이나 역할 같은 것들을 임시 대상으로 두고 협력을 설계하는 걸까요?제가 설계 회의 경험이 별로 없어서 그런지 설계가 진행되는 일련의 과정이 머릿속에 잘 그려지지 않아 이해를 잘 못하고 있는 것 같습니다. 객체 지향 설계(코드 배치 방법) 이전에 진행되는 사전 설계 작업에서 도출된 도메인 모델이 중심이 된다고 보면 될까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
While과 for 스코프 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]While과 for의 변수를 스코프 할때 While 안에서 변수를 선언 할 수는 없는 건가요??
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized 키워드만으로 메모리 가시성이 해결되는 이유가 궁급합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]synchronized 키워드를 사용하면 내부적으로 캐시 메모리에 있는 데이터를 메인 메모리에 값을 동기화 시켜주는 걸까요?
-
해결됨김영한의 실전 자바 - 중급 1편
지역 클래스 - 지역 변수 캡처3
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]지역 클래스는 기능상 이해는 되지만, 실제로 코드 작성 시에는 가독성이 떨어진다고 느껴집니다. 실무에서 많이 쓰이는 걸까요?
-
미해결코틀린 함수형 프로그래밍 - 입문편
git 업로드 가능한가요?
강의 들으며 학습하는 내용(강의 관련 코드)를 개인 git에 업로드 하여도 되나요?
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
구글로그인 인증 에러 문제 살려주세요 ㅠㅠ
DllNotFoundException: Unable to load DLL 'native-googlesignin'. Tried the load the following dynamic libraries: Unable to load dynamic library 'native-googlesignin' because of 'Failed to open the requested dynamic library 처음에 강의를 따라하다가 에러가 떠서 Q&A내용들 확인하고 동일한 에러가 있는걸 발견하고 따라했습니다. https://github.com/googlesamples/google-signin-unity/issues/106 이 깃허브 내용도 확인했습니다. 깃허브 및 Q&A 내용대로 1.srcarr -> arr로 변경하고 2. .arr파일에서 android 체크edm4u resolve (깃허브에는 ./Plugins/Andoid/ 산하에 .jar파일들이 생성된다고했는데 전 안됬습니다.) 진행했습니다. 그러니까 이번에는 로그캣에 61페이지 분량 크래시 로그가뜨면서 종료되는데 혹시 어떻게 해봐야할까요? 2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] JNI DETECTED ERROR IN APPLICATION: mid == null2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] in call to CallStaticVoidMethodV2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] from boolean com.unity3d.player.UnityPlayer.nativeRender()2025-10-08 23:26:35.776 21847 21879 Warn tSoft.MyProject sched_getscheduler(22014): No such process2025-10-08 23:26:35.776 21847 21879 Warn tSoft.MyProject sched_getparam(22014, &sp): No such process2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] Runtime aborting...2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] Dumping all threads without mutator lock held2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] All threads:2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] DALVIK THREADS (41):2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] "main" prio=10 tid=1 Native2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | group="" sCount=1 ucsCount=0 flags=1 obj=0x72cfd3a8 self=0xb4000079b91d37b02025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | sysTid=21847 nice=-10 cgrp=top-app sched=0/0 handle=0x7c82484d282025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | state=S schedstat=( 334617993 29619772 266 ) utm=22 stm=11 core=6 HZ=1002025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | stack=0x7fcbb05000-0x7fcbb07000 stackSize=8188KB2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | held mutexes=2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #00 pc 000bd788 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) (BuildId: 3549de9a967b5089252c4ca16436800c)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #01 pc 00010fa0 /system/lib64/libutils.so (android::Looper::pollOnce+216) (BuildId: 880c071958aa3788bc08025b2e2bae17)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #02 pc 0018e6b4 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce+44) (BuildId: 2e949cb5813b36a6c68d06191a1b108e)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.MessageQueue.nativePollOnce(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.MessageQueue.next(MessageQueue.java:346)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.Looper.loopOnce(Looper.java:214)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.Looper.loop(Looper.java:342)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.app.ActivityThread.main(ActivityThread.java:9634)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at java.lang.reflect.Method.invoke(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] 2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] "FinalizerDaemon" prio=5 tid=6 Waiting2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | group="" sCount=1 ucsCount=0 flags=1 obj=0x2b40378 self=0xb4000079b91d53802025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | sysTid=21854 nice=4 cgrp=top-app sched=0/0 handle=0x793cf585f02025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | state=S schedstat=( 3540231 0 2 ) utm=0 stm=0 core=3 HZ=1002025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | stack=0x793cb55000-0x793cb57000 stackSize=4109KB2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | held mutexes=2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #00 pc 0008029c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) (BuildId: 3549de9a967b5089252c4ca16436800c)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #01 pc 00201230 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks+136) (BuildId: eb4ec0f1d1c7267591d83fa87cb36390)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #02 pc 004af4ec /apex/com.android.art/lib64/libart.so (art::Monitor::Wait+1088) (BuildId: eb4ec0f1d1c7267591d83fa87cb36390)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at java.lang.Object.wait(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] - waiting on <0x0654f29f> (a java.lang.Object)
-
미해결홍정모의 게임 만들기 연습 문제 패키지
깃허브에서 받은 코드가 왜 강의코드랑 다를까요
예제 깃허브에서 강의받으면 lecture 1이 이렇게 열리는데, 실제 저 jm이란 거가 main에 아무것도 안들어있는데 네임스페이스 안에 있는 게 실행되네요 시작하자마자 이렇게 자꾸 오류가 나요
-
해결됨오브젝트 - 기초편
[5-1] Screening과 Movie의 의존관계에 대한 궁금증 질문입니다.
안녕하세요! 추석에 좋은 강의 잘 듣고 있습니다!5-1 강의 3분 20분초에 보면 Screening은 프로퍼티로 movie를 가지게 되므로 Screening -> Movie의 의존성을 가지게 되는데요이때 Movie는 내부 구현에서 메서드의 파라미터로 Screening을 받는 구조에서 프로퍼티가 아닌 파라미터지만 Movie -> Screening의 의존이 생긴다고 볼 수 있지 않을까요?이렇게되면 Screening <-> Movie의 상호의존성이 생긴다고 볼 수 있을거 같은데 이러한 상호 의존도 괜찮나요?제가 사용하는 언어인 Swift에서는 코드의 양이 조금 늘어나더라도 이 경우 프로퍼티나 파라미터 둘 중에 하나를 프로토콜(인터페이스)로 변경해서 상호 의존성을 끊어주는 방식을 사용하는데 트레이드오프로 생각하고 같은 계층에 속한 모델의 경우 이정도의 상호 의존은 생겨도 놔둘것인지 이러한 중간 객체 추가로 상호의존을 끊을것인지 선택하면 되는걸까요?
-
해결됨김영한의 실전 자바 - 중급 2편
Arrays.sort
[질문 내용]MyUser에서 compareTo를 Override한 뒤Arrays.sort(array);System.out.println(Arrays.toString(array));을 했을때 나이 순으로 정렬이 되는데이게 어떻게 이렇게 되는건지 잘 이해가 되질 않습니다.sort가 내부에서 compareTo를 호출하고array가 MyUser타입이기 때문에 MyUser에서 Override한 compareTo를 호출하는건가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[스레드 풀과 Executor 프레임워크1][문제와 풀이] `log("일부 작업이 실패했습니다.");` 실행되는 경우가 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.문제와 풀이 정답 코드에서if (inventoryResult && shippingResult && accountingResult) { log("모든 주문 처리가 성공적으로 완료되었습니다."); } else { log("일부 작업이 실패했습니다."); }else 블록이 실행되는 케이스가 있을까요?future.get() 했을 때의 결과가 모두 true가 나오거나 예외가 터져서 else 블럭은 실행되지 못하는 것으로 이해했습니다. 이렇게 이해한 것이 맞을까요?예제를 간결하게 하기 위해 예외 처리는 제외하셨다고 적어주셨는데 혹시 이와 관련된 부분일까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린에서 상속 시, 주의점에 대한 질문
태현님, 안녕하세요. 뭔가 하나 더 궁금해져서 질문을 드리게 되었습니다!아래의 두 클래스가 있다고 가정해보겠습니다.package me.sungbin.lec10 open class Base( open number: String = "100", ) { init { println("Base Class") println(number) } }package me.sungbin.lec10 class Derived( override val number: String, ) : Base() { init { println("Derived Class") } }그리고 실제로 아래와 같이 Derived 클래스의 생성자를 호출하면 number값으로는 null이 출력됩니다. 여기서 궁금한 것은 number는 non-nullable한 타입인데 null이 왜 출력이 될까? 라는 궁금증이 생겼는데요..그래서 GPT한테 물어보니 아래와 같은 답변을 얻을 수 있었습니다.레퍼런스 타입(예: String) → JVM 기본값 null이 출력됩니다. (Kotlin의 Non-null 보장도 생성 중(super 생성자 실행 중)에는 예외적으로 깨질 수 있습니다.)이렇게 들으니 뭔가 이해가 된 듯 보이는데 이게 GPT 피셜이다보니 태현님의 의견이 듣고 싶어져서 질문을 남깁니다!
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
내용 이해 질문
태현님 안녕하세요, 간만에 강의를 듣던 중 해당 개념에 대해 제가 잘 이해하고 있는지에 대해 여쭤보고자 질문을 드립니다.제가 헷갈리는 부분은 open 에 대한 것과 상속에 대한 주의점인데요.package me.sungbin.lec10 open class Base( open val number: Int = 100, ) { init { println("Base Class") println(number) } }package me.sungbin.lec10 class Derived( override val number: Int, ) : Base() { init { println("Derived Class") } }open 키워드는 기본적으로 상속을 받을 클래스에 붙여주며, abstract 과 같이 반드시 구현해야 하는 클래스에는 따로 명시적으로 붙여주지 않는 것으로 이해가 되었습니다.예시의 Base 클래스와 Derived 클래스에서 getMember() 호출 시, 초기 값이 나온 부분은 실제 Derived 클래스에서 생성자를 호출하고 그 생성자가 상위 클래스 생성자를 호출하고 그 생성자에서 number를 출력하려고 하는데 해당 number는 오버라이딩 되었으니, 하위 클래스의 number를 출력해야 하나, 해당 하위 클래스 생성자 호출 전이므로 초기 값 0이 나온다?라고 이해하면 좋을까요?제가 이해한게 잘 맞는지 혹은 잘못되게 생각한 부분이 있는지 확인해주시면 감사드리겠습니다! 🙂실무에서 이런 케이스를 겪어본 적이 없어서 헷갈리는 것 같아서 이번 기회에 제대로 알아가보려구요!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
김영한 java 입문 설치 질문
1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]openJDK21이 없어서 25로 다운로드 받아서 설치했는데 수업듣는데지장이 없을까요?
-
해결됨오브젝트 - 기초편
2-2. 변경과 의존성 / 데이터 내부 변경 시 setter가 변경의 여파를 흡수하는 방식은 어떤가요?
안녕하세요, 강사님. 강의 '2-2. 변경과 의존성'에서 DiscountPolicy의 startTime과 endTime을 TimeInteval로 통합하면 외부에서 getter를 통해 startTime, endTime을 참조하는 코드가 변경되어야함을 보여주셨습니다.condtion.getStartTime() -> condition.getInterval().getStartTime(); 위 예제를 getStartTime과 getEndTime 메서드가 변화를 여파를 흡수하는 방식으로 변경을 할 수도 있었을텐데 강의의 예제처럼 ReservationService가 변경되어야하도록 코드를 변경하신 관점이 궁금합니다.// interval을 노출시키는 대신 endTime, startTime의 getter에서 변경의 여파를 흡수하고 속성없는 프로퍼티로 동작 public class DiscountCondition { public enum ConditionType { PERIOD_CONDITION, SEQUENCE_CONDITION } ... private TimeInterval interval; ... public LocalTime getStartTime() { return interval.getStartTime(); } ... public LocalTime getEndTime() { return interval.getEndTime(); } } 데이터 변경의 여파가 클라이언트에 전달되는 것은 데이터를 다루는 로직이 데이터 외부에 있기 때문이라는 점은 강의에서 충분히 전달해주셨기에 어느정도 이해했다고 생각합니다. 그리고 위에 질문드린 내용은 일부 속성들이 통합되면서도 기존에 데이터 외부로 제공하던 속성(startTime, endTime)을 어떻게든 그대로 제공할 수 있는 상황(interval에서 꺼내줄 수 있음)에 한정된, 숲 보다는 나무에 관한 질문일텐데... 그래도 자꾸 생각이 나서 질문을 드리게됬습니다.어제에 이어 또 질문을 드리지만 좋은 연휴 되시길 바라는 마음은 정말입니다.감사합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
원자적 연산이 멀티스레드 상황에서 안전한 이유를 제대로 이해했는지 확인 부탁드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요!강의 교안에 따르면 원자적 연산은 '멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리되는 연산이라는 뜻이다' 라고 하는데요그렇다면 동일 객체에 대한 원자적 연산들이 여러 CPU 코어에 나뉘어 동시에 실행하려고 해도 동시에 수행할 수 없기 때문에 원자적 연산은 멀티스레드 환경에서 안전하다고 이해해도 될까요?그렇게 해야 멀티 스레드 상황에서 원자적 연산들이 다른 스레드의 간섭없이 처리될 수 있을 것 같아서요.
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
해시 알고리즘 관련으로 질문이 있습니다.
안녕하세요.현재 cs 강의부터 c/c++/시스템.네트워크,tcp/ip 등 백엔드에 도움되는 강의를 듣고 현재 자바강의를 듣고 있습니다. 자료구조와 알고리즘을 공부할 때 저의 공부방법이 왜 사용하는지, 어떨 때 사용할지, 어떻게 작성하는지, 이럴 때엔 어떻게 대응 할 지를 중심으로 공부를 하고 있습니다. 배열, 스택, 큐, 연결리스트는 코드를 보지 않고 작성할 수 있도록 미리 훈련을 해놓았었지만 최근에 트리 / 해시로 넘어가면서부터 '이걸 안 보고 쓸 정도로 외우려면 시간 소요가 심할 것 같은데?' 생각이 들었습니다. 이러한 고민을 하게 된 건 전에 경쟁력 있는 백엔드 개발자가 되려면 홈페이지 하나는 코드를 보지 않고 써야한다 라는 얘기를 들었기 때문입니다.(다만 공부하고 있는 학생으로 홈페이지 만드는 코드가 무엇인지를 모르기에 이러한 고민을 하게 되는 것도 있습니다.) 13년 전에 C/C++ 개발 회사에서 일을 했을 때 코드를 외우는 게 아니라 어떠한 코드가 필요할 때 책을 펼쳐서 보고 직접 타이핑을 쳤었는데, 안 보고 쓸 정도로 외우기가 어려운 알고리즘들도 마찬가지 아닐까 하는 의구심이 들어 질문 드려봅니다. (현재는 바이브 코딩이겠지만요)
-
해결됨오브젝트 - 기초편
[5-1] DiscountPolicy의 getDiscountAmount 추상 메서드 관련 질문입니다,
5-1강의 7분 10초 경에서 추상 클래스인 DiscountPolicy의 calculateDiscount 메소드 구현 관련하여 질문 있습니다.calculateDiscount 메서드의 로직에서 상영(screening)이 DiscountCondition 중 하나라도 만족하면 getDiscountAmount(screening)이 호출되는데, 이 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 누가 오버라이드한 getDiscountAmount가 호출되는지 궁금하여 질문드립니다.애초에 Movie 객체가 생성될 때 AmountDiscountPolicy와 PercentDiscountPolicy 중 해당되는 할인 정책을 멤버 변수로 사용할 수 있게 된다고 이해하면 될까요? 객체지향에 대해 심도 있게 배울 수 있는 강의라 너무 잘 듣고 있습니다. ㅎㅎ
-
해결됨오브젝트 - 기초편
2-4. 절차에서 객체로 / 도메인 구조를 따라 클래스 구조 변경 부분
강의: 2-4. 절차에서 객체로강의 부분: 5:46 ~질문 DiscountPolicy를 통해 DiscountCondition을 캡슐화한 상태에 대해 'DiscountPolicy의 public 메서드를 수정하는 경우에도 영향을 최소화할 수 있습니다.'라고 말씀하신 부분이 잘 이해가 안됩니다. DiscountPolicy가 전면에 나와 ReservationService에 의해 참조되는 중이니 DiscountPolicy의 public 메서드 시그니처가 변경된다면 ReservationService가 직접 영향을 받으리라 생각됩니다. 혹시 DiscountCondition을 수정하여 그 여파가 DiscountPolicy의 메서드 바디를 수정하게 하더라도 ReservationService는 DiscountPolicy의 메서드를 호출만 하는 상태이니 ReservationService에는 영향이 가지 않는다는 의미로 이해하면 될까요?안녕하세요, 강사님, 그리고 뭔가해서 눌러보셨을 다른 수강생분들.모두 좋은 추석 되시길 바랍니다.감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
버퍼문제?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package scanner.ex; import java.util.Scanner; public class ScannerWhileEx1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); while (true) { System.out.print("이름을 입력하세요 (종료를 입력하면 종료): "); String name = input.nextLine(); if (name.equals("종료")) { System.out.println("프로그램을 종료합니다."); break; } System.out.print("나이를 입력하세요: "); int age = input.nextInt(); input.nextInt(); System.out.println("입력한 이름: " + name + ", 나이: " + age); } } }해당코드를 실행했는데 (줄바꿈처리도 잘 했습니다.) 커서가 저 상태에서 깜빡거리고, 아무 출력도 없어요.
-
해결됨프론트엔드 마스터클래스
이벤트 루프 실행 관련
저는 풀스택 주니어입니다.특수 목적을 위해 바닐라js에서 ,document.innerHTML이나 element.remove(), element.append() 등으로 html element의 생성과 삭제가 빈번한로직을 다루고 있습니다.이 때 종종 브라우저 렌더링의 실행 완료에 대해 명확하게 알지 못해서 찝찝한 채로 브라우저에 렌더링 일을 시키고 있습니다. 그러던 중 이벤트 루프 관련 3개 강의(16,17,18강) 를 듣고 복습차, 17강으로 다시 돌아와서 보는 2분18초 경에 브라우저 랜더링에 대해 궁금한게 생겼습니다. 예를 들면const mySchedule = async () => { await randeringPipelineTask(); //랜더링파이프라인 await macroTask(); // 매크로태스크(); }으로 구성된 mySchedule 메서드가 있다고 가정하겠습니다.macroTask()는 renderingPipelineTask()의 브라우저 페인트까지 모두 완료를 확인한 후에 실행될까요? 아니면 JS엔진이라는 것은, 페인트는 브라우저에 렌더링을 해달라고 부탁까지만하고 macroTask()를 실행할까요?('실행의 시작'과 '실행의 끝'을 나눠서 생각해서 그런지 생각하면 할수록 햇갈립니다.)