Developer Note/국비과정 수업내용 정리&저장 83

24년 10월 10일

JUnit5 이란 ?자바 개발자가 가장 많이 사용하는 테스팅 기반 프레임워크도서관리 프로그램 만들기 과정 수업.CRUD 적용 MVC 패턴 JDBC사용MVC 패턴 구조 동작 순서※ MVC 패턴의 구성MODEL : 프로그램 데이터와,비즈니스 로직을 담당domain.dto : 데이터 전송객체 ex)bookDto는 도서 정보를 담는 클래스domain.dao : db와의 상호작용을 담당하는 클래스. CRUD 작업을 수행한다.domain.service : 비즈니스 로직을 처리하는 계층. dao를 호출하여 데이터를 처리하고, 필요한 비즈니스 규칙을 적용한다.VIEW : user에게 정보를 표시, 입력을 받는 ui 계층view : UI를 구성하는 패키지CONTROLLER : user 입력을 처리하고 모델과 뷰를 연결하..

24년 10월 7일

UML : 통합 모델링 언어.모델을 만들고 설명하는 표준언어다른 사람들과의 협업에 필요하다.UML 형식으로 의사소통을 하면 의미가 명확하고 설계에 대한 논의가 순조롭게 이루어진다.전체 시스템 구조와 클래스의 의존성을 파악하기 쉽다.클래스간의 의존성을 나타내주기 때문에 설계를 세분화할 수 있다.클래스 다이어그램클래스들간의 관계를 나타내는 관계도구조 다이어그램 과 행위 다이어그램으로 나눌수 있다.구조 다이어그램 : 각 요소들의 정적인 면을 보기위한 다이어그램.행위 다이어그램 : 요소들의 동적인 면을 보기 위한 다이어그램.그리는법class: 클래스는 보통 3개의 구역으로 나눈 사각형으로 그린다.이름 , 속성 , 기능을 표기할 수 있으며 이름만 필수로 명시한다.클래스의 세부사항은 필드와 메서드의 [접근 제한자 ..

24년 10월 4일

오전자바의 디자인 패턴디자인 패턴이란 ?특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.특정한 소스나 기계코드는 아니고 , 여러 상황에 맞게 사용될 수 있는 문제들을 해결할 때 쓰이는 템플릿 같은 형식.디자인 패턴은 개발자가 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는 형식화 된 가장 좋은 관행이다.(간단하게 보고 넘어가자)디자인 패턴의 종류생성 패턴싱글톤(중요) : 클래스의 인스턴스가 1개여야만 하는 패턴인스턴스 생성을 제어할 수 있어야한다.유일한 인스턴스에 쉽게 접근할 수 있어야한다.빌더(중요) : 복잡한 객체의 생성방법과 표현방법을 분리하기 위해 사용별도의 builder 클래스를 만들어 값을 입력받아 최종적으로 build() 메서드를 통해 인스턴스를 생성해서 리턴한..

24년 10월 2일

오전프로세스란 ?단순하게 말하자면 현재 실행중인 프로그램이다.사용자가 작성한 프로그램이 메모리 공간을 할당받아 실행 중인 것.이런 프로세스에는 데이터 , 메모리 등의 자원 그리고 스레드로 구성됨스레드란?프로세스 내에서 작업을 수행하는 주체를 말한다.모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다.스레드가 하나일 때는 싱글스레드, 2개 이상일 때는 멀티스레드 라고한다.(스레드를 예로 들어보자면 가게에서 역할을 분담해서 일을 하는 사람 객체 하나 하나를 스레드라고 보면 될 것 같다.)스레드의 생성과 실행스레드를 생성하는 방법에는 두가지 방법이 있다.Runnable 인터페이스를 구현하는 법Thread 클래스를 상속받는 법스레드의 메서드Thread.sleep(10); : 0.01 초간 스레드를..

24년 10월 1일

JDBC : 자바 프로그래밍 언어로 데이터베이스에 접근 할 수 있도록 하는 JAVA API (중요)※ JDBC API 를 이용하여 DB에 연동할 수 있으며 , 데이터베이스에서 자료를 쿼리하거나 업데이트할 수도 있다 . !JDBC API 사용단계JDBC 드라이버 로드Connection 객체 생성STATEMENT 객체 생성SQL 문 전송(쿼리 실행)ResultSet 객체로부터 데이터 조회ResultSet 객체 CloseStatement 객체 closeConnection 객체 Close각 단계별 자세히 설명JDBC 드라이버 로딩 : 사용하고자 하는 JDBC 드라이버를 로딩한다. JDBC 드라이버는 DriverManager 클래스를 통해 로딩된다.Connection 객체 생성 : JDBC 드라이버가 정상적으로 ..

24년 09월 30일

자바 io 프로그래밍 개념자바에서 입출력을 수행하려면 키보드 - 마우스 등을 연결하려고 하 무엇인가가 필요한데 이 때 이것을 스트림(Stream) 이라고 한다.스트림이란 ??사전적 의미는 ‘시냇물’데이터를 운반하는데 사용되는 연결통로 , 흐름프로그램이 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어나는데 이때 데이터는 어떠한 통로를 통해서 데이터가 이동된다.이 때 이 통로를 Stream 이라고 한다.다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 (그 전까지는 List , Set , Map 등의 사용방법이 서로 달랐다.)입출력 스트림에는 InputStream , OutputStream 이 존재하는데 단일 방향으로 연속적으로 흘러간다.Java.io 패키지의 주요 클래스 설명F..

24년 09월 27일

Map 이란 ?Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻는다.맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점이다. 특징1. 요소의 저장 순서를 유지하지 않습니다.key :  중복을 허용  Xvalue :  중복은 허용 O Set :  Set 인터페이스는 List와 유사하지만 중복이 허용되지 않고 기본적으로는 순서가 유지 되지 않습니다. 구현 클래스로는 HashSet, LinkedHashSet, EnumSet, TreeSet, CopyOnWriteArraySet 등이 있으며 가장 널리 사용되는것은 HashSet 입니다. 순서가 필요한 경우 LinkedHashSet 클래스나 SortedSet 인터페이스를 구현한 ..

24년 09월 26일

복습추상클래스 사용이유 :강제성 : 함수이름을 미리 통일해놓고 밑에서 사용하기 위해설계단계를 나중으로 미룰 수 있다.protected 접근 제어자 :같은 패키지는 다 접근가능한데다른 패키지에서는 자식 클래스만 접근 가능함.C15 02Interface 부터클래스 다이어그램클래스 내부 구성요소 및 클래스 간의 관계를 표현하는 대표적인 UML.이를 통해 시스템의 일부 또는 전체의 구조를 나타낼 수 있다.이를 통해 의존 관계를 명확히 보게 해주고 수정할 시에는 더 효율적으로 수정할 수 있게 해준다.빈 다이아몬드 : 탈부착가능인터페이스 관계선 : 점선 빈 삼각형상속 관계선 : 실선 빈 삼각형https://two-parks.tistory.com/50 클래스 다이어그램 작성법_참고HashCode 란?hashcode ..

24년 09월 25일

C13 . C04메소드오버라이딩 부터.C15 인터페이스 C01까지.상속받을 때 다중상속은 안되지만 상속에 상속은 가능오버로딩과 오버라이딩의 차이점 :오버로딩 : 헤더 쪽을 수정 : 개발자의 편의성에 중점(함수 이름 단일화) : 상속을 전제로 하지 않음(상속을 해야 사용할 수 있는게 아니라는 뜻임) 오버라이딩 : 본체(Body) 쪽을 수정 : 다형성 의 특징 **: 상속을 전제로함**다운캐스팅 업캐스팅 :자동형변환이 일어나는 이유 : 하위 클래스에서 상위클래스로 바뀔 때 데이터가 손실되지 않을 때Sub ob2 = new Sub();Super ob4 = ob2; //여기서 ob2 와 ob4 는 같은 Sub클래스를 참조하고 있다.//하지만 ob4는 앞에 Super 클래스가 붙음으로써 ..

24년 09월 24일

전역변수(global) : 다른 파일에서도 해당 변수에 접근이 가능하다초기값을 지정하지 않으면 0으로 자동초기화된다.지역변수(local) : 중괄호 내부에서 선언되어 함수 내부에서만 접근이 가능정적변수(static) : 객체가 생성되기 이전부터 존재하는 변수package C11;import C00.C01System_out;//다음 2개의 static 가진 ArrayUtils 클래스를 만들어보자. 다음 코드의 실행 결과를 참고하여 concat()와 print()를 작성하여 ArrayUtil 클래스를 완성하라.class ArrayUtils { public static int[] concat(int[] a, int[] b) { /* 배열 a와 b를 연결한 새로운 배열 리턴 */ ..