본문 바로가기

Java (국비)/Java 메모21

연산자 ==, equals() 메서드 메모 Test 라는 클래스와, 멤버변수로 name과 num을 가지고 있는 상황. 참조변수 test1과 test2는 주소가 다르기 때문에 둘을 비교하면 무조건 다르다고 뜬다. 그래서 만약에, 위와 같이 포켓몬을 비교하려고 하는데, 예를들어 포켓몬 둘이 피카츄로 같은 상황. equals() 메서드를 사용했을 때 같다고 나오게 하고싶으면 equals() 메서드를 오버라이딩 하면 된다. Pokemon의 이름과 내가 비교하려고 하는 대상의 이름이 같아? 오버라이딩을 통해 true가 나오는 모습을 볼 수 있다. 근데, 주소를 비교하는 상황이 아니라, 값을 비교하는 상황이라면, 주체가 객체가 아니고 String이나 int 등등이면 값을 비교하기 때문에 오버라이딩을 하지 않고서도 값이 같다고 나오는걸 확인 할 수 있다. 즉.. 2023. 6. 2.
다형성 메모 다형성 오버라이딩(동적바인딩) => 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.
다형성 (다운캐스팅) 메모 @Override public boolean equals(Object obj) { //아이디(mid)가 같다면, 같은 객체 ! MemberVO mVO = (MemberVO)obj; if(this.mid.equals(mVO.mid)) { return true; } return false; } // Object 클래스의 참조변수 obj를 MemberVO 타입으로 다운캐스팅 하는 상황 이다. // 아이디, 비번, 이름 다 받았지만, 아이디만 비교하게 ! 내 입맛대로 재정의. // 내 아이디와 비교할 대상의 아이디를 비교한다. // (다운캐스팅 한 obj(비교할 대상을 가리키는 변수)를 mVO 참조변수에 저장하여) // (mVO.아이디) // 맞으면 true // 아니면 false 1. 최상위 클래스인 Obje.. 2023. 5. 25.
4주차 복습 주석 (많이 달기) 연산자 (우선순위체크) 제어문(한글코딩) 배열(3요소) 배열의 3요소를 체크하고, 컬렉션 프레임워크 사용이 훨씬 좋은데 ? 하면 사용. (때로는 배열리스트보다 그냥 배열을 쓰는게 좋을 수도 있으니까 ~) 함수(3요소 == 메서드 시그니쳐) 메서드 디버깅표 -------------------------------------------------------------------------------------------------- 객체지향 프로그래밍 (OOP)의 특징 4가지 1) 추상화, 2) 캡슐화, 3) 상속, 4) 다형성 1 ) 추상화 : abstract 추상클래스 객체화 XXXXX 추상메서드 == 오버라이딩을 강제 ex) 포켓몬, 모양,.. (포켓몬은 없고, 포켓몬을 상속받은 피.. 2023. 5. 25.
MVC 패턴 느낀점 23.05.25 1. 컨트롤러에서 전체적인 흐름을 구성해 본다. M C V (M과 V가 직접적으로 연결되지 않도록 이해하기 쉽도록 한글코딩 하기) 이때, 내가 사용할 모든 함수명, 멤버변수, 변수명을 정해놓으면 훨씬 수월한 느낌. 2. DAO에서 사용할 기능들은 어차피 CRUD에 의해 구현되고, CRUD (DAO 함수)의 이름은 고정이다. 이름은 아래와 같다. 1) insert 2) selectAll (getAll) 3) selectOne (getOne) 4) update 5) delete 또한 CRUD (DAO 함수)는 input이 VO(클래스명) vo(참조변수) 으로 고정이다. 또한 CRUD (DAO 함수)는 output이 boolean 으로 고정이다. (특별하게 사용자 정의 타입의 무언가를 반환 해.. 2023. 5. 25.
MVC (Model-View-Controller) 메모 2 DAO 코드 수정) Controller 예시) View와 DAO를 사용해야하므로, 선언 후 생성자에서 초기화. 장바구니 기능을 위해 controller 에 추가. 1. V의 프린트메뉴 메서드를 호출해서 인자를 받고, int action에 저장. 2. action이 1, 2, 3, 4, 5, 6, 7 에 따라, 기능이 실행.. (View에서 기능을 알려주는 인터페이스가 있다면, 기능을 사용하기 위해 번호 입력을 하면 그 번호를 Controller에서 받아서 action에 저장하고, 여기서 1번일때는 무슨무슨기능 2번일때는 무슨무슨기능 .. 7번일때는 무슨무슨기능 하면서 View와 DAO를 연결시켜준다. 3. View와 DAO는 절대로 한줄에 같이 있지 않음을 알 수 있다. 4. 컨트롤러에서 DAO로 그저 .. 2023. 5. 24.
MVC (Model-View-Controller) 메모 DAO 예시) 1. VO 클래스의 객체를 생성해서, VO 클래스의 배열리스트 (객체배열)에 .add 하는 모습. 2. CRUD의 Create에 해당하는 insert 메서드에 인자값으로, DrinkVO(클래스명/타입) vo(참조변수) 를 확인 할 수 있다. 원래라면, DrinkVO의 객체를 배열리스트에 .add 할 때 VO의 생성자가 PK,name,price,cnt 라서 (PK는 직접 입력 받지 않음) insert 메서드의 인자로 위와 같이 표현 했다. 그래서 접근할 때 참조변수.메서드, 참조변수.메서드, 참조변수,메서드 로 표기 할 수 있다. 3. CRUD의 Read에 해당하는 selectAll 메서드에 인자값으로, DrinkVO(클래스명/타입) vo(참조변수) 를 확인 할 수 있다. 1) 리턴값으로 D.. 2023. 5. 24.
에러 메모 23.05.19 23.05.20 2023. 5. 19.
로그 로그는 말그대로 기록을 뜻하는 단어이다. 로그는 단순 연산도 기록 할 수 있지만 보통 메서드 위주로 기록 한다. 오류가 발생시 어떤 액션 + 어떤 기능에서 발생 했는지가 기록 된다. stu.name = "홍길동"; 처럼 대입 연산자를 사용하게 되면 메서드가 아니기 때문에 로그에 남지 않는다고 가정하면, stu.setName("홍길동"); 처럼 메서드를 사용하게 되면 로그에 남는 다는 의미 이다. +++ 하나의 코드로 여러 개발자들이 동시에 작업을 하게 되는데, 이럴 경우 프로젝트 완성시 기여도가 다르게 된다. 기여도가 어떤지 로그로 측정이 가능하다. 2023. 5. 17.