묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock 관련 질문
Send부분에서 lock을 해주시고 나서 OnSendCompleted가 호출됬을때도 lock을 해주셨는데, 그럼 OnSendCompleted때 또 잠겨서 만약 Send가 같이 실행중에 있었다면 다른스레드는 Send부분 lock에서 갑자기 잠기면서 실행이 불가능하게 되는건가요? _pendingList.Clear()때문에 이런 고민을 하게되었습니다
-
미해결함수형 프로그래밍과 JavaScript ES6+
bloking/non-blocking, sync/async와 연결지어 생각해도 괜찮을까요??
이번 강의를 보면서 bloking/non-blocking, sync/async가 떠올랐는데요! function add10(a, callback) { setTimeout(() => callback(a + 10), 100); } 위 코드는 제어권이 다시 돌아오지 않으니깐 async이고, 그 반대로 Promise는 Promise 객체가 반환되어 제어(.then)할 수 있으니 non-blocking이라고 생각해도 괜찮을까요?
-
미해결스프링 핵심 원리 - 고급편
strategy강의 소스받을수 있나요.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? . 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니요[질문 내용] 전략패턴 관련 strategy강의 소스받을수 있나요. 전략패턴
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Array.from vs Array
안녕하세요.. 강사님 문득 궁금한점이 있어서 질문을 남깁니다.. 보통 고정적인 배열을 생성하실때 Array.from을 많이 사용하시는데 저는 Array().fill 이 조금 더 읽기 쉬운 코드라 생각하여 작성하고 있었습니다. 그러다 문득 궁금한게 고정된 배열을 생성하는 두 가지 방법의 시간 복잡도가 궁금해 졌습니다. Array.from({length:n}, () => 0) 의 경우 배열을 생성하면서 값을 채워 넣기에 O(n) 의 시간 복잡도를 갖고Array(n).fill(0) 의 경우 배열을 생성후 다시 순회하며 값을 채워 넣기에 O(n) + O(n) 의 시간 복잡도를 갖는다고 생각 했습니다. 1. 위에 제가 생각한 시간 복잡도가 맞을까요~?2. Array(n) 에 대한 시간 복잡도가 O(1) 이다 와 O(n) 이라는 의견이 존재하는데 어떻게 생각하시나요~? 만약 O(1) 의 복잡도이면 1번의 답이 어떻게 될까요? 읽어주셔서 감사합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
npm pm2 start -- npm start 에러
npm i 설치 npm run build npm pm2 start -- npm start 하면 정상적으로 작동하지만 npm pm2 monit 하면 저 에러가 발생합니다.
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Anchor box-K-Means Clustering
안녕하세요^^ 강의 너무 잘 듣고 있습니다. 다름이 아니라 k-means clustering로 군집화를 진행하는 것 까지는 이해했는데, 그 군집화로 어떻게 박스를 그리는지 모르겠습니다ㅜㅜ 또, anchor box라는 개념을 코드로 구현할 때 opencv같은 라이브러리를 활용해서 직접 그려야하는 건가요??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
다른 풀이
package algorithm.Inf; import java.util.Scanner; import java.util.Stack; public class Inf5_2 { public String solution(String str) { String answer=""; Stack <Character> stack = new Stack<>(); for(char x : str.toCharArray()) { if(stack.isEmpty() && x!='(' && x!=')') { answer+=x; }else if(x=='(') { stack.push(x); }else if(x==')') { stack.pop(); } } return answer; } public static void main(String[] args) { Inf5_2 T = new Inf5_2(); Scanner sc = new Scanner(System.in); String str = sc.next(); System.out.println(T.solution(str)); sc.close(); } } 안녕하세요. 제가 알파벳 자체를 스택이 비어있고, '('나 ')'가 새로 들어오지 않을 때 알파벳을 answer에 추가하는 식으로 코드를 짜보았었는데 이 풀이가 논리적인 오류가 없는지 봐주시면 감사드리겠습니다.
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
퍼블리셔와 프론트엔드 업무 질문입니다
강의 중에 이런 말씀을 하셨더라구요 "textarea 태그에 name, id 이런 부분은 개발자들이 하는 것이기 때문에, 신경안써도 된다~" 퍼블리셔와 프론트엔드 개발자에서 어떤 업무적인 차이가 있는지 궁금합니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
Hive의 External Table ...
안녕하세요? Hive 의 External Table 이란게...물리적인 데이터는 가지지 않고, RDBM의 View 처럼 그냥 논리적인 구조를 만드는 개념인가요? 예를 들어서 create external table if not exist TABLE_A ..... location '/pilot-pjt/collect/car-batch-log/' 로 선언을 해서 테이블 A를 만들고, 그 후 동일한 하둡 파일로 create external table if not exist TABLE_B ..... location '/pilot-pjt/collect/car-batch-log/' 로 테이블 B 를 만들면 TABLE_A , TABLE_B 이라는 2개의 물리적인 테이블이 생기는지.. 아니면 같은 hadoop 파일을 바라보는 뷰가 2개 생기는 건지 궁금합니다.
-
미해결[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
Expected identifier, got 'LParen'
VSCode에서 발생하는 에러입니다. 도무지 해결 방법을 모르겠네요 ㅠㅠ 도움 부탁드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실제 Proxy 주입 확인에 대해 질문있습니다.
/* MemberController*/ @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; System.out.println("memberService = " + memberService.getClass()); // 프록시 조회해보기 } /* MemberService*/ public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; System.out.println("memberRepository = " + memberRepository.getClass()); // 프록시 조회해보기 } 안녕하세요! 프록시 조회에 대해서 질문드립니다!! 프록시를 조회하고 싶어서 print문을 써봤습니다.그런데 MemberService 프록시는 MemberController 생성자에 print문을 작성해주고 MemberRepository 프록시는 MemberService 생성자에 print문을 작성해주어 확인했는데, MemberController 프록시는 어디에 print문을 작성해서 확인해야 하나요? 두번째 질문은 출력 순서를 보면 1. AOP START 다음 2. 레포지토리가 출력되고 3. END 출력 4.그 다음에 서비스 프록시가 출력되는데, 순서가 왜 이렇게 되는지 궁금합니다. 스프링을 실행시키면 어떤 부분이 가장 먼저 실행되나요?? AOP START가 가장 먼저 출력되는 걸 보니 TimeTraceAop가 실행되고 그 다음에 MemberService가 실행되는 것인가요..?? 작동되는 순서를 전혀 모르겠습니다ㅠㅠㅠ SpringConfig이 먼저 실행되어 START에 SpringConfig.memberSerivce 메소드가 찍히는 것인가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드된 Jar파일 실행시 "/"(Welcome Page)에서 404에러
jar파일을 실행하여 하여 웹서버를 열었을 때, "/hello" 에서는 화면이 잘 나오는데, "/" 루트 경로에서는 404에러가 나옵니다. (intellij에서 Run 했을때는 루트 경로에서도 잘 나왔습니다.) 혹시 "templates/..." 안의 html파일들은 인식하는데 "static/index.html"은 빌드시 인식을 못하는걸까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
현업에서 스프링-컨버터 를 객체매퍼 대용으로 사용을 하사는지에 대한 질문입니다.
안녕하세요 강사님!약간 Mapper 에 치중된 질문이 될 수도 있을것 같습니다. 저는 , 스프링 컨버전서비스를 활용할 줄 몰라, 스프링의 ObjectMapper 와 MapStruct 를 병행으로 매핑작업을 하고 있었는데요 `매핑작업`은 , Dto < > Entity 필드값 매핑을 의미합니다. 이번강의를 통해 `컨버전서비스`의 강력한 기능을 보고, 추가 라이브러리 Mapper(MapStruct) 가 필요없겠다는 생각이 들었습니다.(그래도 컴파일 시점에 매핑로직이 생성되는것은 환상적인 기능 같습니다^^) 그리고, 어디선가 강사님의 답글을 읽은 바 로는, 객체매퍼를 (ModelMapper, MapStruct 등) 추가로 사용을 않하시는 것으로 알고있습니다. 그래서 매퍼를 써야할지 고민을 꾸준히 해왔었는데요, 질문입니다 외부 LIB매퍼를 사용안하시는 이유가 , `객체매핑(DTO 엔티티 필드값 매핑)` 이 컨버터/포멧터 를 통해서도 가능하기 때문.이라 추측해도 될까요..? 조심스래 여쭤보아요.. 스프링 ConversionService 를 객체매퍼로 활용하는 것과, 업무처리 효율에 도움이 될지 강사님의 견해를 알고싶습니다. 객체매퍼 라이브러리를 지금도 사용을 쭉 안하시는지(수작업 매핑 선호),혹시 사용 중이시거나, 사용계획이 있으시다면, 어떤 라이브러리를 사용하실 지가 궁금합니다. 읽어주셔서 고맙습니다.
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
콘솔창 문의 드립니다!
선생님 안녕하세요! 어제부터 갓 시작했는데 스크립트 강의에서 콘솔창에 결과값이 Hello World 할때는 떴었는데 그 이후에는 콘솔창에 결과값이 안뜨더라구요 계속해보고 찾아봐도 왜그런지 정보를 못찾겠더라구요...그러다 우연히 발견했는데 스크립트 이름을 바꿀경우에 오브젝트에 적용할때 체크표시창이 아예 없더라구요... 혹시 이 문제가 맞는건가요? 맞다면 체크창이 왜 없는걸까요ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
csr 관련 질문있습니다!
csr을 하고자 할 때, 백엔드(spring)와 프론트엔드(react)가 동일한 환경에 있다면 localhost 서버 내에서 api 통신이 가능할 것 같습니다. 그렇다면 백엔드와 프론트엔드가 각각 독립된 환경에 있다면 api 통신을 어떻게 할 수 있는 건가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
상수 참조 매개변수
template<typename T> class Node { public: Node() : _next(nullptr), _prev(nullptr), _data(T()) { } Node(const T& value) : _next(nullptr), _prev(nullptr), _data(value) { } public: Node* _next; Node* _prev; T _data; }; STL 리스트를 강좌를 듣다가 궁금한 점이 있어서 연속 질문 드립니다. 생성자에서 왜 cosnt T& value로 매개변수로 사용하는지 .. 잘 이해가 안갑니다. 참조변수를 받으려면 멤버변수가 T* _data로 포인터형이어야 되는것 아닌가 생각이 드는데 제가 뭘 잘못 알고 있는것인지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
IllegalStateException : Failed to load ApplicationContext오류가 자꾸 발생합니다.
3시간 정도 해결하다가 안되서.. 일단 오류 내용은 이렇습니다.. java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: jpabook.jpashop.Member at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:122) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) ... 27 more Caused by: org.hibernate.AnnotationException: No identifier specified for entity: jpabook.jpashop.Member at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:266) at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:248) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:239) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:282) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1224) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1255) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ... 43 more MemberRepositoryTest입니다! package jpabook.jpashop;import org.assertj.core.api.Assertions;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.annotation.Rollback;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.transaction.annotation.Transactional;@RunWith(SpringRunner.class)@SpringBootTestpublic class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); //when Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); //then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); }} MemberRepository입니다 package jpabook.jpashop;import jpabook.jpashop.Member;import lombok.extern.java.Log;import org.springframework.stereotype.Repository;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;@Repositorypublic class MemberRepository { @PersistenceContext private EntityManager em; public Long save(Member member) { em.persist(member); return member.getId(); } public Member find(Long id) { return em.find(Member.class, id); }} application.yml입니다! 그리고 질문란에 써있는데로, H2를 실행한 상태이고, jpashop.mv.db도 만들어져 있습니다. 또 혹시 제가 코드를 잘못 작성했을까봐 강의자료에 나와있는 자료들을 모두 복붙하였습니다. gradle까지 복붙했습니다.. 그런데 자꾸 오류가 생성되어 여쭤보게 되었습니다. 감사합니다! 추가로 컴퓨터도 껐다 켜봤습니다! 또 추가적으로, 그 영한님이 주신 강의 소스코드로 전체 완성본은 또 돌아가더라고요.. 그래서 더더욱 뭐가 문제인지를 모르겠습니다 ㅠㅠ
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
장치초기화 강의편에서 오류가 납니다..
이런식으로 동적할당을 해줬는데도 같은 오류가 납니다
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
self. 은 왜 입력하는건가요? class에서 기본으로 들어가야하나요?
self. 은 왜 입력하는건가요? class에서 기본으로 들어가야하나요?
-
해결됨객체 지향 프로그래밍 입문
의존 주입 예제 관련 질문입니다.
의존 주입 관련 질문입니다. (동영상 5:13초)코드 예제에서 오른쪽 하단에 schSvc.setCalculator(cal); 코드가 존재하고 있습니다.Q1. 왜 SchSvc.setCalculcator(cal);은 굳이 생성자를 통해서 의존 주입을 하지 않나요? Q2. 혹시 SchSvc.setCalculator(cal);의 이유가 생성된 이후에도 여러 번 setCalculator을 통해 ScheduleService의 cal 필드 변경이 필요해서 일까요? Q3. Q2의 질문의 답변이 만약 맞는 경우(생성된 이후 여러 번 setCalculator를 통해 계산법 변경이 필요하다) setter는 지양해야 된다는 한 블로그를 보게 되었습니다.(출처: https://velog.io/@sezeom/Getter-Setter-%EC%A7%80%EC%96%91%ED%95%98%EA%B8%B0) 혹시 setCalculator 방식 말고 ScheduleService 객체가 이미 생성된 이후에도 private Calculator cal을 변경 시킬 수 있는 다른 방법이 있을까요? 지금 떠오르는 것은 setter로 cal을 갱신하는 것이 아닌 계산과 관련된 메소드를 만들고, 메소드의 파라미터를 계산 기능과 관련된 추상화를 통한 객체 다형성을 통해 해결하는 방법 밖에 생각이 나지 않습니다. 그 외 다른 방법이 존재할까요? Q4. Q3과 연관된 질문인데 만일 조립을 통해 생성된 객체가 생성된 이후 특정 상황에 따라 조립을 통해 생성된 객체가 다른 객체로 변경이 필요한 경우에는 setter(조립된 객체를 저장한 특정 필드를 변경) 말고 다른 방법을 통해 조립을 통해 이미 생성된 객체를 변경이 가능할까요? 기존 강의의 여러 내용을 훑어보았지만 마땅한 해결책이 떠오르지 않습니다. 이 경우는 조립을 쓰지 않는 게 답일까요? 아니면 다른 좋은 해결 방법이 존재하는 지 궁금합니다. Q5. 어떤 특정한 경우에는 새로운 객체를 생성하지 않고 기존 생성한 객체를 계속 사용하면서 setter 등을 통해서 기능을 바꾸어야 할 때가 있을 것 같습니다.(억지 예시로 생성에 비용이 큰 객체는 매번 재생산 시 비용의 부담이 있을수도 있어서 static을 통해 한번만 생성하고 여러 상황에 맞게 setter 등을 통해 기능을 바꾼다. 기능 기능과 책임의 분리 측면에서는 맞지 않지만 아주 억지적인 가정을 한다면요...) 이 때 setter 방식보다는 메소드의 파라미터를 통해서 기능을 메소드 내에서만 사용하도록 하는 방식이 객체지향에 알맞지 않을까 싶습니다. 근데 위 내용의 반론으로 만약 동일한 기능을 여러 메소드에게 공통적으로 전달하여 사용하고 setter 변경 주기가 짧은 편이 아니라면 어쩌면 setter 한번 쓰고 메소드의 파라미터로 기능을 전달하지 않고 메소드를 사용하는 게 옳을수도 있겠다는 생각이 듭니다. 하지만 또 생각해보면 setter를 통해 객체를 전달한 것 자체가 setter로 전달된 객체는 private일지라도 캡슐화 된 객체 내에서 다른 메소드가 접근이 가능해서 오류가 발생하지 않을까 싶기도 합니다.혹시 강사님이 생각하시는 좋은 해결법이 존재할까요?이상입니다.감사합니다.[기타 잡소리]강의 잘 보고 있습니다. 벌써 마지막에 강의에 가까워지네요.객체지향이 이렇게 신기한 건지 몰랐습니다. 강사님 책 중 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 책을 오늘 서점에서 구매했습니다.해당 강의 다 보고 책 다시 정독하고 싶네요.좋은 하루 되세요