@RequestMapping("/todo/update")
public Object update(int index, Todo todo) {
if (index < 0 || index >= todoList.size) {
return 0;
}
Todo old = (Todo)todoList.list[index];
todo.setDone(old.isDone()); // 기존의 체크정보는 그대로 가져가야한다. boolean 값의 경우 get말고 is 임
return todoList.set(index, todo) == null ? 0 : 1; // 첫번째로 객체의 주소를 주면댄다
}
SpringBoot <- Spring Web MVC, IOC <- Servlet/JSP <- networking thread <- I/O API
#는 제목
-는 리스트
colab - 머임 숫자기호 만들기 페이지
// 새 기능을 추가하기 위해 기존 코드를 변경하는 방식의 문제점 :
// 1) 새 기능을 추가&변경하면서 기존 코드를 손대는 경우, 없던 오류가 발생할 수 있다. 기존코드는 테스트가 다 되어있기 때문
// 2) 기존 코드에 계속 코드를 추가하다 보면 코드의 덩치가 커지고 복잡해져서 유지보수가 어려워진다.
// 3) 새로 추가한 기능이나 변경한 기능이 다른 프로젝트에서 나중에 필요없을 때 기존 코드에서 제거하기가 힘들다
// 4) 기존 소스가 없으면 이 방식을 사용할 수 없다
// 이런 문제점을 해결하기 위해 나온 문법이 "상속(inheritance)"이다
기존 코드를 복제한 후 기능을 추가하는 방식의 문제점 :
1) 같은 코드가 여러 클래스에 중복된다.
=> 기능을 변경할 때 복제해서 만든 모든 코드를 변경해야 하는 번거로움이 있다.
=> 예를 들어 원본 클래스에서 버그가 발견된다면, 그 클래스를 복제해서 만든 모든 클래스에도 버그가 존재하기 때문에 원본 클래스 뿐만 아니라 복제한 클래스 모두에 대해서도 코드를 수정해야한다.
// 이런 문제점을 해결하기 위해 나온 문법이 "상속(inheritance)"이다
*원본 클래스에 버그 존재 -> 복제한 모든 클래스에 버그 존재( 그러면 원본 수정하면 복제한 클래스도 코드 수정해야함)
유지보수를 잘하자, 쉽게하자
상속문법 -> 기능확장하는 문법(기존 기능을 그대로 가져오면서 새 기능 추가, 기능 변경을 쉽게 할 수 있다.)
super class = parent
sub class = child
최상위 클래스(root class) 자바의 모든 클래스는 Object의 sub 클래스다.
상속의 단점 - > 중간의 서브클래스에서 추가한 필요없는 기능을 제거할 수 없다.
에러떳을 대 caused by 뜬 곳 보면 됨
상속 - 기존 코드를 내 코드인양 사용하겠다는 허가증을 받은 거임ㅇㅇ
상속이랑 위임이랑 뭐가 더 나은지 정답이 없다 각각 더 적합한 애들이 있다 위임ㅇ은 코드를 유연하게 만든다. 상속은 Calculator이 좀 더 잘어울리고, 위임은 readLine이 더 적합하다 둘다 공통점은 기존 코드를 버리지 않고 재사용하는 거임
/java-lang/src/main/java/com/eomcs/oop/ex05/test5/Calculator2.java <== 이게 위임임
Spring bean container = 스프링 객체 관리자
사실은 톰캣서버로 요청이 들어오는 거임
파일에서 데이터를 읽을 때 형식에 안맞는 문자가 있으면 에러가 뜸
프로그래밍 코드는 중복되면 유지보수가 힘들다
데코레이터 패턴 - 상속의 단점을 보완하기 위해 사용하는 기법
포함관계 - 상속에 비해 유연한 방식
/수퍼 클래스의 생성자는 바로 ㅏ용할 수 없다.
// 서브 클래스의 생성자를 통해 사용해야한다.
public FileReader2(String filename) throws Exception{
// 다음과 같이 수퍼클래스의 생성자를 호출해야한다.
super(filename); // 이거 생성자 바로 못써서 이렇게 해주는 거임?
상속은 문법이고 위임은 기법이다.