전체 글
-
객체지향의 사실과 오해언어/객체지향 2023. 8. 1. 14:35
1. 협력하는 객체들의 공동체 - 객체지향이란 실세계를 직접적으고, 직관적으로 모델링할 수 있는 패러다임 - 하지만, 이는 실세계를 모방하는 것을 의미하지 않는다. 고객을 만족시킬 수 있는 신세계를 창조하는 것에 가깝다. - 실세계와의 연관성은 객체의 자율성을 부여하고, 객체가 서로 메시지를 통해 서로 협력하는 객체지향의 연결완전성에서 찾아 볼 수 있다. 1.1 협력하는 사람들 - 커피를 주문하는 클라이언트, 주문을 받는 캐셔, 커피를 만드는 바리스타의 협력관계를 통해 객체지향을 엿볼 수 있다. - 협력 사이에 객체들은 각자의 역활과 수행해야할 책임이 있다. - 사람들 사이에서 일어나는 일처럼, 소프트웨어를 개발할 때도 협력,역할,책임은 중요한 의미를 가진다. > 요청과 응답으로 구성된 협력 - 협력이란..
-
자바 nextstep - 인터페이스, 전략패턴카테고리 없음 2023. 7. 25. 16:59
1. 인터페이스란? (사전적의미) - 하나의 시스템을 구성하는 2개의 구성요소(하드웨어,소프트웨어) 또는 2개의 시스템이 상호 작용할 수 있도록 접속되는 경계 - 이 경계에서 상호 접속하기 위한 조건, 규약 등을 포괄적으로 가리키는말 2. 인터페이스 예시 JDBC를 통해 이해해보기 -> DB를 교체해야할 때 만약 DB를 담당하는 코드와 자바코드가 밀접하게 연결되어 있다면, DB를 교체해야할 때 많은 비용과 시간이 발생할 것이다 (전부 수정) -> 이를 위한 해결방법으로 인터페이스를 사용한다 JDBC(DB연결/인증, SQL쿼리생성/문장실행, 결과패치) 인터페이스 [규약,표준 생성] -> Mysql,oracle 등이 이에 맞게 구현체 만듦 -> DB작업을 할 때 이제 JDBC에서 제공하는 API만을 사용함 ..
-
자바 nextstep - 상속, 팩토리 메서드 패턴카테고리 없음 2023. 7. 25. 16:12
1. 상속 - extends로 중복코드 제거 - 추상클래스를 통한 서비스 집중화 (추상화) - 캡슐 단위의 공통 서비스,기능 - 코드 집중화란 하나의 프로세스 내에서 중복되는 코드를 한 곳에 모아서 함수나 클래스 형태로 사용하는 것 - 공통 분모, 뼈대를 모아둔 것이므로, 추상 클래스는 새로운 객체를 생성할 수 없음 (new불가) ** 추상화 구현 과정에서 자식은 추상 메서드를 오버라이드로 구현해야함 -> 이 과정에서 전부 오버라이딩 할 거 아니고, 필요한 부분만 오버라이딩 하고 싶다. -> but 추상메서드는 부모에 구현된게 없어서 super로 불러올 수 없음 -> 부모 클래스에 추상메서드와 동일하지만, 부모의 구현이 있는 메서드 두개 만들어서 처리 1.2 추상메서드 활용 - 팩토리 메서드 패턴 - E..
-
Java - 일급컬렉션언어/JAVA 2023. 7. 25. 11:40
일급컬렉션이란 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태 1.일급컬렉션 적용 규칙 - 일급컬렉션에는 컬렉션 외 다른 멤버변수 없어야한다. - 각 컬렉션은 자체로 포장돼 있음으로, 콜렉션과 관련된 동작 근거지가 마련됨 - 필터가 일급컬렉션 클래스에 일부가 된다. > 필터는 또한 스스로 함수 객체가 될 수 있다. Map map = new HashMap(); map.put("1","A"); //.. 이를 아래와 같이 클래스 안으로 묶음 public class GameRanking{ private Map ranks; public GameRanking(Map ranks){ this.ranks = ranks; } } List carList = new ArrayList(); pu..
-
Servlet-JSP MVC07 파일 수정하기언어/JAVA 2023. 7. 24. 21:23
- 파일 수정하기 - 파일 수정하기도 회원 가입시 첨부파일을 지정하는 것과 마찬가지로 - 파일 업로드하고 정보 수정 vs 파일 업로드 없이 정보 수정 - 파일 업로드하고 회원 정보 수정시 1. ajax로 먼저 파일을 업로드 시키고, 업로드 된 filename 콜백함수로 받아서 2. hidden타입 id= filename에 value를 return받은 filename으로 바꿔 둔 뒤에 3. 수정하기 누르면, 같이 넘어가도록 한다. 1. 뷰 쪽 수정 function update(){ if($("#file").val() != ''){ var formData = new FormData(); formData.append("file",$("input[name=file]")[0].files[0]); $.ajax({ ..
-
Servlet-JSP MVC07 - 파일 삭제 하기Web/Servlet-JSP 2023. 7. 24. 20:52
1. 뷰 설정 삭제 버튼에 a태그로 자바스크립트 메서드 연결시켜두었다. function delFile(num,filename){ location.href="?num="+num+"&filename="+filename; } 삭제를 위한 컨트롤러와 연결 2. fileDeleteController public class FileDelController implements Controller{ @Override public String requestHandler(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String ctx = request.getContextPath(); //파일 이..
-
Java - File클래스언어/JAVA 2023. 7. 24. 12:27
- File은 기본적이면서도 가장 많이 사용되는 입출력 대상이다. - file클래스는 파일 혹은 디렉토리를 다룰 수 있도록 다양한 메서드를 정의하고 있다. 1. File클래스 생성자 * 파일과 디렉토리는 같은 방법으로 다룬다. * pathname에는 보통 경로까지 포함새서 지정해줘야하지만, 프로그램이 실행되는 위치와 파일의 위치가 같을 경우 파일명만 사용해도 된다. File f = new File(//path); File dir = new File(//path); //이미 존재하는 파일을 파일 객체로 참조시 File f = new File(//) //없는 파일을 생성할때 f.createNewFile(); *OutputStream에 경우 해당 스트림을 열고 파일을 쓸 때 파일이 없으면 생성해서 쓴다. (F..
-
Java - io 직렬화(Serialization)언어/JAVA 2023. 7. 24. 11:20
- 직렬화란, 객체를 저장했다가 다시 꺼내쓰거나, 네이트워크를 통해 객체를 주고받을 수 있게 만드는 방법이다. 1. 직렬화란? - 객체를 데이터 스트림으로 만드는 것을 뜻한다. - 객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것을 말한다. - 반대의 의미로 역직렬화가 있다. - 자바 프로그램에 메모리 구조에서 살펴봤듯이, 인스턴스 메서드도 객체에 포함되지 않는다 -> 동일 클래스에 여러 인스턴스 별로 다른 값을 가지지 않음 -> 힙 영역이 아닌 타 영역에 생성된 메서드 참조해서 사용 - 객체를 저장한다는 것은 인스턴스 변수값을 저장한다는 의미이다. 2. 객체 스트림 - 직렬화와 역직렬화를 위한 스트림으로 ObjectInputStream, ObjectOutputStream이 있다...