본문 바로가기

Java (국비)86

Controller 연습 2 23.05.29 2023. 5. 29.
Model 연습 2 23.05.29 2023. 5. 29.
최고가, 최저가 검색 로직 이클립스에서 구현 하기 1주차 때 배운 최대값, 최소값 알고리즘을 활용 하면 된다. 1. Controller 에게 ProductVO 타입의 객체 pVO 묶음을 받음. 2. 해당 검색 기능은 한개만 딱 검색 하는 상황이니, CRUD 중에서 Read에 해당하며, selectOne() 에 해당. 3. 높은 응집도를 위해 selectOne() 안에 여러 기능들을 구현. 4. 받은 객체 묶음안의 , 최고가, 최저가 키워드를 확인. 5. max 값과 min 값을 ProductVO 타입의 배열리스트 안에 0번째 인덱스의 객체(상품)으로 설정. Controller 에서 이어주기 1. View는 Console에 상품목록을 출력해야 한다. 2. 상품목록을 받기 위해서는 Controller을 통해 받아야 한다. 3. Con.. 2023. 5. 29.
필터 검색 로직 상품이 있다고 가정 하고, 1. 가격을 2번 입력시 금액이 A ~ B 까지의 상품들을 출력. CRUD 에서 R에 해당하는 selectAll() 메서드 에서 기능을 구현 한다. why ? (필터) 검색 결과가 가령 1개 밖에 나오지 않는다고 하더라도, 그건 우연히 그런것이고, 2개 이상이 검색될 가능성이 1% 라도 있으면 selectAll() 이다. 이클립스에서 구현 하기 교환 알고리즘 : 최소값이 최대값 보다 크다면, 또는 최대값이 최소값 보다 작다면, 그 수를 자동으로 바꿔줘서, 검색하게 해주는 로직. searchCondition : output이 현재 ProductVO 타입인데, return 값으로 2개를 뱉어낼 수는 없으니, 객체에 사용하지 않는 인자를 활용해서 minPrice와 maxPrice의 .. 2023. 5. 29.
Model 연습 23.05.28 2023. 5. 28.
View 연습 23.05.28 2023. 5. 28.
Controller 연습 23.05.28 2023. 5. 28.
다형성 메모 다형성 오버라이딩(동적바인딩) => 90% abstract 포켓몬 abstract 공격() 포켓몬[] datas = new 포켓몬[5]; datas.add(new 푸린()); datas.add(new 고라파덕()); 푸린 고라파덕 푸린.공격() 고라파덕.공격() zzz 물대포 푸린.먹기() datas.get(0) == 푸린 datas.get(1) == 고라파덕 datas.get(0).공격() : 공격() 메서드는 부모한테있었다. 근데, 실제 수행객체는 푸린인 상황! 결국은 푸린.공격() == 동적바인딩(오버라이딩이 선행 되어 있었어야 한다 !) 포켓몬.먹기() equals() this.name.equals(obj.name) 2023. 5. 27.
MVC (Model-View-Controller) 2 ★ 결합도 낮추기 ★ 결합도가 "낮다" => 유지보수 용이 1. 짜놓은 코드를 확인하는 상황 -> 정말 현재 코드의 결합도가 낮은지를 체크. 2. 체크했더니 결합도가 높네 ? -> 어떤 이유로 ? 코드의 여러 부분(파트) 를 수정 해야 하는 상황. == 연쇄적으로 코드를 바꿔야 하는 상황. == 결합도가 높다. 3. 따라서, DAO의 CRUD (비즈니스 메서드, 핵심로직) 는 어떠한 추가적인 요구사항으로 인해 수정을 들어가야 하더라도 절대로 DAO의 CRUD의 "메서드 시그니쳐"가 변하지 않도록 코드를 작성 한다. 즉, "메서드 시그니쳐"는 설계 단계에서 절대로 변경되면 안된다. why ? 메서드 시그니쳐가 바뀌면 다른 파트에 영향을 미치게 되서 연쇄적으로 코드를 바꿔야 하는 상황이 발생. 4. 그래서,.. 2023. 5. 27.