전체 글 92

[10주차] 1차 프로젝트 1일차-4일차 & 회고록

1차 프로젝트 진행 1일 차 저번 주까지 1차 프로젝트에 대해 사전 조사와 명세서를 작성했다.오늘은 ER 다이어그램을 작성하기 앞서 개념적 ERD를 먼저 작성한 뒤 논리적 ERD를 만들어보았다.원래 목표했던 타임라인보다 많이 뒤처져있는데 아직도 협의가 끝나지 않은 부분이 있어 진행상황을 빠르게 나가야 할 필요를 느낀다.팀플이란 정말 힘든 것이다...나는 구현에 들어가기 앞서 모두가 공유할 수 있는 스크립트를 작성해서 팀원과 공유하려고 한다. 그러면서 협의 과정을 거쳐서 모두가 동의했을 때 구현에 들어가야 나중에 혼란이 오는 것을 막을 수 있을 것 같다.오늘은 데이터베이스 퀴즈를 봤는데 마지막에 두 문제 정답을 바꾸는 바람에 85점이 나왔다ㅠㅠ연휴까지 앞으로 2틀! 오늘 너무 컨디션이 안 좋았는데 조금만 ..

[9주차] 데이터베이스 11 -15일차

2024/08/05데이터베이스 11일 차 오늘은 UML 설계의 4+1 뷰 중 유스케이스 뷰를 알아보고 팀 프로젝트의 요구 사항을 유스케이스 다이어그램으로 표현해 보는 시간을 가졌다.시스템의 규모가 커지고 복잡해지면서 하나의 소프트웨어에서도 여러 개의 이해관계가 생기게 되었다.이러한 이해관계들의 역할에 따라 관점을 5개로 나눈 것을 4+1 뷰라고 한다.이렇게 설계한 모델인 시스템 아키텍처는 점진적인 시스템 개발에 꼭 필요한 중요 요소이다.  유스케이스 뷰는 모든 뷰의 중심 뷰로서 기능적인 부분(요구사항)을 정의하고 명세한다.유스케이스 뷰를 통해서 시스템이 제공하는 기능이 무엇인지 확인할 수 있다.    2024/08/06데이터베이스 12일 차 오늘은 클래스 다이어그램의 구성 요소와 표현, 클래스 사이의 관..

[8주차] 데이터베이스 6 -10일차

2024/07/29데이터베이스 6일 차 6일 차에는 MySQL에서 제공하는 내장함수와 데이터 타입을 알아보고 대용량의 동영상 파일과 텍스트 파일을 데이터베이스에 업로드, 로컬 컴퓨터의 저장소에 다운로드해 보았다.집계 함수를 통해 피벗 테이블의 형태로 특정한 그룹의 값을 구해보는 쿼리를 사용하고 JSON 오브젝트를 생성해서 JSON 형태로 데이터를 저장해 보았다.json_search, json_remove와 같은 내장 함수를 쓰기도 했는데 JSON 객체에 저장되어 있는 데이터를 배열처럼 인덱스를 지정해서 삭제, 수정, 입력을 할 수 있었다.-- json 오브젝트 생성하기select json_object('name', name, 'height', height, 'year', birthYear) as '키 1..

카테고리 없음 2024.08.05

[7주차] 데이터베이스 1 - 5일차

2024/07/22데이터베이스 1일 차 오늘은 데이터베이스의 개념과 특징 관계형 데이터베이스에 대해 알아보았다.관계형 데이터베이스와 NoSQL의 특징도 잠깐 짚고 넘어갔는데 NoSQL은 키 값이 없고 JSON을 통해 데이터를 주고받는다는 점이 달랐다. 하지만 NoSQL이 테이블끼리의 관계를 완전히 배제하진 않았다. 상황에 따라서 관계를 맺을 뿐인데, 일대다 다대다 등 테이블끼리의 관계를 정의하고 키 값을 통해 연결되는 형식의 관계형 데이터베이스와 큰 차이를 가진 다는 것을 알 수 있었다.앞으로의 프로젝트에 있어서 관계형 데이터베이스를 사용할 것인데, 실제로 사용하면서 어떤 부분이 장점이고 단점인지, 그런 이유로 NoSQL보다 뒤처지는 이유가 무엇이고 NoSQL이 어떠한 불편함을 해소할 수 있는지에 대해 ..

[6주차] 자바 고급 5 - 9일차

2024/07/15스트림과 중첩 클래스 7월 3주 차 월요일 시작!오늘은 스트림과 중첩 클래스에 대해서 배웠다. Nested Class로 불리는 중첩 클래스는 특정 클래스 내부에 선언하는 클래스로 함수형 프로그래밍의 기초가 된 개념이다.API를 생성할 때 중첩 인터페이스가 사용된다고 한다.중첩 클래스 이해가 안 돼서 스터디 끝나고 중첩 클래스에 대해 공부해야겠다.프로그램을 더 작은 단위로 쪼개고 실행하기 위해 스트림과 이너 클래스, 익명 클래스를 활용할 수 있고 이 기능 덕분에 코드의 복잡성을 줄이고 다형성을 구현할 수 있다는 점이 큰 장점이라는 것을 확인할 수 있었다.  2024/07/16람다와 스트림 오늘은 테스트 리뷰 및 람다와 스트림을 복습해 보았다. 중첩 클래스와 람다를 배우면서 람다 자체의 식..

[Lesson 14] 예외와 입출력 처리

예외의 기본프로그램 실행 중 발생하는 오류를 예외(Exception)이라고 한다. 예외 처리 (exception handling)의 순서는 다음과 같다.1. try 블록 내에서 예외가 발생 시 그 시점에 코드 실행이 중단 2. 발생된 예외의 종류가 catch 블록의 괄호 내에서 지정한 예외와 일치할 시 그 안의 코드를 실행 3. catch 블록 안의 코드가 실행된 후 try~catch 블록 다음 코드를 실행 자바는 예외를 받을 catch 블록을 발견하지 못하면 예외를 발생시킨 메서드로 거슬러 올라가 catch 블록을 찾는데, main() 메서드의 경우 더 이상 올라갈 수 없기 때문에 main()이 예외 처리를 할 수 있는 최후의 클래스이다. finally 블록은 예외 발생 유무에 관계없이 항상 마지막에 ..

[5주차] 자바 고급 1일 - 4일

2024/7/9자바 고급 - Base 모듈  오늘은 자바에서 기본적으로 제공하는 Base 모듈의 클래스 중 Object, System, 문자열, 포장, 수학 클래스에 대해 알아보았다.자바의 모든 클래스의 루트 클래스인 Object 클래스를 활용하는 방법도 있었다.Object 클래스의 메서드인 equal과 toString, clone 을 오버라이딩해서 객체를 비교하거나 객체를 복사해서 활용할 수 있었다.Object 클래스를 잘 쓰고 싶은데 처음 접하는 개념이라 많이 어려웠다.특히 얉은 복사와 깊은 복사를 통해 객체를 완전히 복사할 수 있는 점에서 Object 오버라이딩을 잘하면 실무에서 큰 도움이 될 거라고 생각했다.어떤 객체를 가공하기 전에 해당 객체의 원본을 백업하기 위해 깊은 복사를 사용할 수 있을 ..

[Lesson 13] 대규모 프로그램의 작성

패키지클래스를 패키지(package)에 포함하는 방법을 사용하여 클래스를 구분하고 클래스가 충돌하는 것을 방지할 수 있다. 다른 패키지 안의 클래스를 사용하기 위해서는 아래 두 가지 작업이 필요하다.다른 패키지의 클래스에서 사용될 클래스 이름 앞에 public 붙이기다른 패키지의 클래스를 사용할 때 그 클래스의 이름 앞에 패키지 이름 붙이기package p1;public class Example1 { private int num;}--------------------------------package p2;class Example2 { p1.Example1 ex1 = new p1.Example1();}  임포트import 패키지명.클래스명; 으로 임포트 작업을 하면 다른 패키지 안의 클래스를 사용할 때 ..

[Lesson 12] 인터페이스

추상 클래스abstract 제한자가 붙은 클래스를 추상 클래스라고 한다.추상 클래스는 아래의 특징을 가진다.객체를 생성할 수 없다몸체가 없는 메서드를 가질 수 있다 (추상 메서드)추상 클래스의 서브 클래스에서는 추상 메서드를 오버라이딩하여 작성하고, 호출 시 각 서브 클래스에 적합한 메서드를 호출하기 때문에 서브 클래스를 한 곳에 모아 제어하는 시스템을 만들 수 있다. 그래서 추상 클래스를 사용하면 서브 클래스 관리가 용이해지고 이해하기 쉬운 코드를 작성할 수 있다.  인터페이스interface 키워드를 클래스명 앞에 붙여 인터페이스를 선언할 수 있다. 인터페이스의 선언 시에는 필드는 반드시 초기화 (상수)하고 메서드 몸체는 만들 수 없다 (추상 메서드). 또한 생성자를 가질 수 없다. 인터페이스형 변수..

[Lesson 11] 새로운 클래스

상속새로 확장된 클래스가 기존 클래스의 멤버를 물려받는 것을 가리켜 상속이라고 한다. 여기서 기존 클래스란 이미 설계가 끝난 바탕이 되는 클래스 (슈퍼 클래스)를 말한다. 이 기존 클래스를 물려받으면서 코드를 확장해서 만드는 새로운 클래스를 서브 클래스라고 한다. 서브 클래스는 슈퍼 클래스의 멤버를 상속받고 슈퍼 클래스의 멤버를 동일하게 호출 가능하다. super()를 사용해서 슈퍼 클래스의 생성자 중 인수의 형과 개수가 일치하는 생성자를 골라 호출할 수 있다.  this() : 그 클래스의 다른 생성자를 호출super() : 그 클래스의 슈퍼 클래스 생성자를 호출 두 메소드는 모두 생성자의 가장 윗부분에 위치해야 하므로 동시에 사용할 수 없다. 오버라이딩서브 클래스의 메소드로 슈퍼 클래스의 메서드를 대..