We will find a way, we always have.

-interstellar

분류 전체보기 289

[오브젝트] 3장 역할, 책임, 협력

객체지향 패러다임의 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 1. 협력 영화 예매 시스템 돌아보기 영화 예매라는 기능을 완성하기 위해 객체들이 서로 메시지를 주고 받으며 상호작용하고 있다. 위 그림과 같이 객체지향 원칙을 따르는 애플리케이션의 제어 흐름은 어떤 하나의 객체에 의해 통제되지 않고 다양한 객체들 사이에 균형 있게 분배되는 것이 일반적이다. 객체들은 요청의 흐름을 따라 자신에게 분배된 로직을 실행하면서 애플리케이션의 전체 기능을 완성한다. 이처럼 객체들이 애플리케이션의 ..

OOP 2023.11.28

[리뷰] <노코드/로우코드>

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 노코드(No-code)와 로우코드(Low-code)는 소프트웨어 개발에 있어서 전통적인 코딩이나 프로그래밍 작업을 최소화하고, 시각적이고 직관적인 도구를 사용하여 응용 프로그램을 만드는 방법을 나타낸다. 이러한 개념들은 비전문가들이나 프로그래밍 경험이 제한된 사람들도 소프트웨어를 개발할 수 있게 하는 데 중점을 두고 있다. 1. 노코드(No-code) - 노코드는 말 그대로 "코드를 작성하지 않음"을 의미한다. 노코드 플랫폼은 주로 시각적 인터페이스와 드래그 앤 드롭 기능을 제공하여 사용자가 프로그래밍 없이도 소프트웨어를 개발하고 관리할 수 있도록 한다. - 예를 들어, 노코드 도구를 사용하면 웹 페이지, 비즈니스 프로세스, 데이터베이스 애플리케..

Blah blah 2023.11.26

[오브젝트] 2장 객체지향 프로그래밍

1. 영화 예매 시스템 요구사항 살펴보기 영화 예매 시스템을 살펴보자. 여기에는 "영화"와 "상영"이라는 용어가 등장한다. 영화는 제목, 가격 등과 같이 영화에 대한 정보를 나타내고, 상영은 실제로 관객들이 영화를 관람하는 사건을 표현한다. 관객이 실제로 예매를 하는 대상은 특정 시간에 상영되는 영화이다. 특정한 조건을 만족하는 예매자는 요금을 할인받을 수 있다. 이때 필요한 것은 할인 조건(discount condition)과 할인 정책(discount policy)이다. 할인 조건은 '순서 조건'과 '기간 조건'으로 나뉘는데 순서 조건은 특정한 상영 순번을 가진 영화에 대해, 기간 조건은 요일, 시작 시간, 종료 시간을 정하여 해당 기간에 포함되는 영화에 대해 할인 혜택을 제공하는 것이다. 할인 정책..

OOP 2023.11.25

[오브젝트] 1장 객체, 설계

이론이 먼저일까, 실무가 먼저일까? 로버트 L. 글래스 1. 티켓 판매 어플리케이션 구현하기 요구사항 소극장의 홍보를 위해 추첨을 통해 관객들에게 무료 공연 초대권을 발송한다. 관람객의 소지품은 초대장, 현금, 티켓으로 제한하고 이를 보관할 용도의 가방을 들 고 온다. 클래스 구현 관람객이 소지품을 보관할 Bag 클래스를 추가하고, 초대장의 보유 여부를 판단하는 hasInvitation 메서드와 티켓의 소유 여부를 판단하는 hasTicket 메서드, 현금을 변화시키는 plusAmount, minusAmount 메서드, 그리고 초대장을 티켓으로 교환하는 setTicket 메서드를 구현한다. Bag 인스턴스의 상태는 현금과 초대장을 함께 보관하거나, 초대장 없이 현금만 보관하는 두 가지 상태중 하나이다. 이..

OOP 2023.11.21

[리뷰] 러닝 MySQL

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 러닝 MySQL은 MySQL을 처음 배우는 사람이나, 다른 데이터베이스를 사용하다 MySQL로 변경되어 공부하려는 사람들에게 추천하는 도서이다. 이 책은 총 4부로 이루어져있다. MySQL 시작 리눅스, 윈도우, 맥OS, 도커에서 MySQL을 설치하고 설정하는 방법을 설명한다. MySQL 사용법 사용법에서는 데이터베이스 모델링과 설계, CRUD와 같은 쿼리 작성 방법, 테이블, 인덱스를 생성하고 수정하는 방법을 설명한다. 제품 환경의 MySQL 제품 환경에서는 데이터베이스의 꽃이라고 볼 수 있는 트랜잭션에 대해 다루고, 사용자 및 권한 관리, 백업 및 복구와 서버 구성 및 튜닝에 대해 설명한다. 기타 마지막 부에서는 MySQL 서버 모니터링 방법..

Blah blah 2023.10.29

[인텔리제이] 콘솔, 터미널, 텍스트 에디터, 메뉴, 패키지 폰트 변경

나의 눈은 소중하니 폰트들을 키워주기로 했다. 👀 코드 입력창 콘솔창 메뉴탭 이렇게 3군데 폰트를 변경해줄 것이다. 코드 입력창 Settings -> Editor -> Font Size를 변경해주면 된다. 행간을 변경하고 싶다면 Line height를 수정하면 된다. 콘솔창 콘솔창에서도 이것저것 볼게 많은데 이친구도 폰트를 변경할 수 있다. Settings -> Editor -> Color Schema -> Console Font 이때 Use console font instead of the default 체크박스를 체크해야 변경이 가능하다. 메뉴탭 패키지 이름이나, 안내문구 등등 read only 로 되어 있는 부분들의 폰트 사이즈도 변경할 수 있다. Settings -> Appearance & Beh..

Skills 2023.10.20

[DB] 스키마 (Schema)

스키마 (Schema) 스키마는 데이터베이스의 구조와 제약 조건에 관하여 전반적인 명세를 기술한 메타데이터의 집합이다. 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 뿐만 아니라 데이터들의 제약 조건까지 포함되어 있다. 속성의 데이터 타입을 나타내지는 않는다. 스키마는 시간에 따라 불변인 특징을 가지고 있다. 스키마의 3계층 스키마는 사용자의 관점에 따라 3계층으로 나뉜다. 외부 스키마 (View Schema) 사용자 관점에서의 논리적인 구조이다. 사용자와 데이터베이스 간의 상호 작용을 정의할 수 있는 뷰 레벨이다. 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마라고도 불린다. 때문에 하나 이상의 외부 스키마가 존재할 수 있으며 하나의 외부 스키..

[백준] 28357번: 사탕 나눠주기

🔈 문제 소수전공 수업을 마무리한 찬우는 축하의 의미로 학생들에게 사탕을 나누어 주려 한다. 구체적으로, 기준이 되는 음이 아닌 정수 $X$를 정한 뒤 최종 점수가 $X$점을 넘는 학생들에게 점수가 높은 만큼 많은 사탕을 줄 것이다. 즉, $X+1$점을 받은 학생은 $1$개, $X+2$점을 받은 학생은 $2$개, $T$($T > X$)점을 받은 학생은 $T - X$개의 사탕을 받게 된다. 찬우는 학생들에게 최대한 많은 사탕을 나누어주고 싶기 때문에 기준 점수 $X$를 가능한 한 낮게 정하려 한다. 하지만, 지금 가지고 있는 돈으로는 사탕을 $K$개까지만 살 수 있기 때문에 사탕의 총 개수가 $K$개를 넘으면 안 된다. 찬우의 수업은 총 $N$명이 수강했고, $i$번째 학생은 $A_i$점을 받았다. 수강생..

[리뷰] 그림으로 배우는 리눅스 구조

한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 하드웨어와 소프트웨어를 이해하기 위해서 운영체제에 대한 지식은 필수적이다. 또한 운영체제에서 리눅스는 빠질 수 없는 운영체제이다. 리눅스를 배우고 싶은 사람들에게 그림으로 배우는 리눅스 구조는 필독서가 될 것 같다. 이 책은 운영체제에 대한 내용을 Python, Go, Bash 등으로 작성된 코드를 기반으로 실습을 진행하여 어렵지 않게 이해시켜주고 있다. 흐름은 우선 리눅스 개요부터 시작하여, 프로세스 생성과 종료와 같은 프로세스 관리, 프로세스 스케줄러, 메모리 관리 시스템, 프로세스 통신 파일 시스템, 메모리 계층 뿐만 아니라 가상화 기능과 컨테이너에 대해 후루룩 훑는다. 이 책을 실습과 같이 진행한다면 완독하고 난 후에는 커널, 하드웨어 등..

Blah blah 2023.09.24

[객체지향의 사실과 오해] 01. 협력하는 객체들의 공동체

협력하는 객체들의 공동체 시너지를 생각하라. 전체는 부분의 합보다 크다. - 스티븐 코비(Stephen R. Covey) 객체지향은 실세계의 모방이라는 개념은 객체지향을 이루는 철학적인 개념을 설명하는데에는 도움이 되지만, 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하는데에는 도움이 되지 못한다. 객체지향의 목표는 실세계의 모방은 전혀 아니다. 오히려 새로운 세계를 창조하는 것이라고 볼 수 있다. 그럼에도 불구하고 계속 사용하고 있는 이유는 상태와 행위를 캡슐화(encapsulation) 하는 소프트웨어 객체의 자율성(autonomous)을 설명하는데 효과적이기 때문이다. 현실세계에서 암묵적으로 약속을 맺고, 명시적인 계약을 기반으로 협력하여 목표를 달성해나가는 과정은, 메시지를 주고 받으며 ..

카테고리 없음 2023.09.22