전체 글 76

[가계부 시스템] 2. 시스템 설계 - 아키텍쳐, DB

2021.07.15 - [Project] - [가계부 시스템] 1. 요구사항 정리 [가계부 시스템] 1. 요구사항 정리 항상 쓰던 가계부 앱에 광고가 득실거려서, 직접 만들기로 했다. 기능적인 요구사항은 다음과같다. 여러 기기에서 데이터가 동기화되며 동시에 사용할 수 있을 것. 여러 자산(각 은행별 계좌, 현 blog.robinjoon.space 이전글에 작성한 요구사항을 보면, "여러 기기에서 데이터가 동기화되며 동시에 사용할 수 있을 것" 이라는 요구가 있다. 이는 서버를 두고, 서버에 데이터를 저장해야함을 의미한다. 각 클라이언트에 데이터를 저장하고 실시간으로 데이터를 주고받는것은 구현의 어려움도 있고, 각 기기가 항시 인터넷에 연결되어있지 않으면 데이터가 마구잡이로 섞일 수 있기 때문이다. 어쨌든..

Project 2021.07.15

[가계부 시스템] 1. 요구사항 정리

항상 쓰던 가계부 앱에 광고가 득실거려서, 직접 만들기로 했다. 기능적인 요구사항은 다음과같다. 여러 기기에서 데이터가 동기화되며 동시에 사용할 수 있을 것. 여러 자산(각 은행별 계좌, 현금 등)을 등록해 관리할 수 있을것. 전체 자산의 총합과 수입과 지출을 월별로 관리할 것. 가계부에 적을 정보는 날짜및 시간, 자산, 거래의 분류, 금액, 내용 이다. 사용자는 언제든지 가계부에 적은 정보를 삭제, 수정할 수 있다. 거래의 분류는 수입, 지출마다 따로 정해져있다. 거래의 분류는 사용자가 추가할 수 있다. 각 자산간 이동(현금을 계좌에 입금하는 등)을 따로 관리할 수 있다. 이는 수입과 지출에 포함되지 않는다. 월별 통계기능을 제공한다. 통계에는 전체수입(지출)중 각각의 거래분류가 얼마나 차지하는지 표시..

Project 2021.07.15

[객체지향의 사실과 오해] 2장 내용 정리

2021.07.13 - [IT 책 독서록] - [객체지향의 사실과 오해] 1장 내용 정리 [객체지향의 사실과 오해] 1장 내용 정리 객체지향 시스템은 자율적인 객체간의 협력으로 이루어진다. 협력을 구성하는 각 객체들은 각각의 역할이 있고 역할은 곧 책임을 의미한다. 실세계의 커피숍을 이와같은 관점으로보면 커피를 blog.robinjoon.space 객체는 구별가능한 식별자, 특징적인 행동, 변경가능한 상태를 가진다. 상태 : 특정 시점에 객체가 가지고있는 정보의 집합. 객체의 구조적 특징을 표현한다. 객체의 상태는 정적인 프로퍼티와 동적인 프로퍼티 값으로 구성된다. 프로퍼티 : 객체의 상태를 구성하는 모든 특징. 단순한 값인 속성과 다른 객체를 참조하는 링크로 부분된다. ex) 사람의 키, 몸무게 프로퍼..

IT 책 독서록 2021.07.14

[객체지향의 사실과 오해] 1장 내용 정리

객체지향 시스템은 자율적인 객체간의 협력으로 이루어진다. 협력을 구성하는 각 객체들은 각각의 역할이 있고 역할은 곧 책임을 의미한다. 실세계의 커피숍을 이와같은 관점으로보면 커피를 주문하는 것은 손님의 역할이자 책임이다. 손님의 주문을 바리스타에게 전달하고, 바리스터로부터 전달받은 커피를 손님에게 주는것은 캐셔의 역할이자 책임이다. 캐셔로부터 전달받은 커피를 만드는것은 바리스타의 역할이자 책임이다. 자율적인 객체는 상태와 행동을 가지고, 협력에 참여하는 과정속에서 스스로 판단하고 결정한다. 이러한 자율성은 객체의 내부와 외부가 명확히 구분되어있는 것으로부터 나온다. 객체는 다른 객체가 무었을 하는지는 알 수 있지만, 어떻게 하는지는 알 수 없다. 객체는 다른 객체와 협력하기위해 메시지를 전송하고 또 수신..

IT 책 독서록 2021.07.13

[객체지향의 사실과 오해] 리뷰

이 책은 "객체지향이 무었인가?" 라는 질문을 쉬우면서도 진지하게 풀어가는 책이다. 객체지향 프로그래밍언어의 기본서에서 객체지향에 대해 설명하는 부분에서 보통 객체지향이란 현실세계의 추상화이다 라고 설명한다. 그러나, 이 책은 시작부터 이런 설명을 철학적인 이해에는 도움이되나 실용적인 측면에선 부족한 설명 이라고 말한다. 그 후 간단한 커피숍 예제를 통해 이 책의 전체를 관통하는 중요한 키워드 역할, 책임, 협력 을 소개한뒤 이 키워드들을 기반으로 설계할때 무엇이 중요한지 이야기했다. 이 책은 객체가 무었인지, 객체지향은 무었인지, 다형성이 무었인지, 객체지향 시스템의 설게는 어떻게 하는게 좋은지 등의 객체지향언어로 프로그램을 조금 작성해보았다면 가질 의문을 다룬다. 이제 막 객체지향 프로그래밍에 발을 ..

IT 책 독서록 2021.07.13

[Refactoring] 동아리 홈페이지 리팩토링 1. 인증작업 중복제거

지금부터 약 1년 전 대학 동아리에서 사용할 홈페이지를 제작했었다. 이제 다시 여유가 생겨 여러 기능도 추가하고, 외형도 다듬으려 이클립스를 열었지만, 과거의 나에게 한숨만 나왔다. 대체 무슨 생각으로 이렇게 복잡하게 짠건지... 수많은 중복된 코드와 일관적이지 못한 변수명등 아주 문제가 많았다. 그래서 기능 추가 전에 리팩토링을 진행하려 한다. 우선, 가장 많은 중복이 있는 로그인체크, 회원등급체크, CSRF체크 부터 손보기로 했다. public void execute(HttpServletRequest request, HttpServletResponse response, String action) throws ServletException, IOException { // TODO Auto-generat..

Project 2021.05.09

[Clean Code] 2장 의미 있는 이름 - 내용정리

좋은 코드를 작성하는 내용을 담은 여러 책중 가장 유명한 책인 "클린 코드"를 읽고 내용을 정리해 보았다. 단순히 내용을 정리하는 것이므로, 이에대한 나의 생각은 다음 포스팅에서 다룬다 모든 소프트웨어에서 이름은 어디나 쓰인다. 변수에도,함수에도, 인수와 클래스,패키지등 모든 곳에 이름을 붙인다. 심지어 소스코드 파일에도 이름을 붙이고 실행파일에도 붙인다. 따라서, 이름을 잘 지으면 여러모로 편하다. 의도를 분명하게 밝혀라 변수나 함수 크리고 클래스 이름은 그것의 존재이유는? 수행기능은? 사용방법은? 이라는 질문들에 답해야하며, 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간(단위: 날짜) 위 코드에서 d 라는 이름은 아무 의미도 나타내지 않는다. 이런 이름 ..

IT 책 독서록 2021.05.05

제네릭(Generic)

이 포스팅은 신용권님의 이것이 자바다 13장으로 공부한 내용을 정리한 것입니다. 제네릭이란, 클래스와 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 하는 기술이다. 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 이런 방식은 여러 장점을 가진다. 제네릭을 사용하지 않는다면 여러 타입을 값으로 받기 위해 변수를 Object 타입으로 선언하게 되는데, 이는 런타임에서 에러가 발생할 확률을 높인다. 아래 코드를 보자. String str = "aaa"; Object obj = str; Integer var = (Integer)obj; 이 코드는 컴파일시에는 아무 문제가 없이 컴파일이 된다. 그러나 실행하면 잘못된 타입 변환으로 예외가 발생하며 종..

Java/기초문법 2021.04.27

중첩클래스 2

이전글 2021/02/28 - [Java] - 중첩클래스 중첩클래스 안드로이드 프로그래밍을 하면서, 클래스 내부에 다른 클래스를 만드는 형태의 코드를 종종 짜게 되었다. 관련 레퍼런스나 다른 사람들이 작성한 코드를 복붙하는 수준으로만 했었는데, 문뜩 robinjoon98.tistory.com 이전 포스팅에서 중첩클래스의 종류와 특징, 그리고 중첩클래스의 접근제한에 대해 알아봤다. 이번 포스팅에서는 익명객페에 대해 다룬다. 익명객체 익명객체는 이름이 없는 객체를 말한다. 익명객체는 클래스를 상속하거나 인터페이스를 구현해야만 생성이 가능하다. 인터페이스를 구현한 익명객체는 오로지 하나의 인터페이스만 구현할 수 있다. 1. 익명자식객체 익명자식객체란 클래스를 상속하여 만들어지는 익명객체를 말한다. 부모타입으로..

Java/기초문법 2021.03.09

중첩클래스

안드로이드 프로그래밍을 하면서, 클래스 내부에 다른 클래스를 만드는 형태의 코드를 종종 짜게 되었다. 관련 레퍼런스나 다른 사람들이 작성한 코드를 복붙하는 수준으로만 했었는데, 문뜩 클래스 내부에 다른 클래스를 구현하는 이유와 그 종류가 궁금해 공부해 보았다. 신용권, 『이것이 자바다』, 한빛미디어(2015), 9장 을 이용해 공부한 내용을 정리해보았다. 중간중간 내 생각도 추가되어있다. 중첩클래스 클래스 내부에 선언한 클래스를 중첩클래스라고 한다. 객체지향 프로그래밍에서 각 클래스들은 서로 관계를 맺고 메소드와 필드를 사용해 상호작용을 한다. 그러다보면 어떤 클래스는 다른 여러 클래스와 관계를 맺기도 하고, 어떤 클래스는 하나의 클래스와만 관계를 맺기도 한다. 설계를 하는 입장에서, 그 복잡성을 줄이려..

Java/기초문법 2021.02.28