본문 바로가기
728x90

전체 글410

좋은 객체 지향 설계의 5가지 원칙 : SOLID SRP(Single Responsibility Principle) 단일 책임 원칙 하나의 클래스는 하나의 책임만을 가져야한다. 그러나, 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있으며, 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. ex) UI 변경하는데 다 뜯어 고쳐야한다? 객체지향적이지 못함. 객체의 생성과 사용을 분리 OCP(Open/Closed Principle) 개방-폐쇄 원칙(가장 중요) 소프트웨어 요소는 확장에는 열려있으나, 변경에는 닫혀있어야한다. 다형성을 활용하자. 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 OCP를 지킬 수 없는 문제점 클라이언트가 구현 클래스를 직접.. 2022. 10. 11.
좋은 객체 지향 프로그래밍이란? 객체 지향 프로그래밍 컴퓨터 프로그램을 명령어의 목록으로 보는 것이 아닌 여러 개의 독립된 객체들의 모임으로 파악한다. 각 객체는 메시지를 주고받고, 협력하여 데이터를 처리할 수 있다. 유연하고 변경이 용이하게 만들기 때문에 대규모 개발 프로젝트에 많이 사용된다. 유연성과 변경 용이성 -> 다형성(Polymorphism) 레고 블록 조립하듯이 어떤 부품을 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발하는 것을 뜻함 역할과 구현을 분리 역할과 구현으로 구분하면 세상은 단순해지고, 유연 해지며 변경도 편리해진다. 클라이언트는 단순히 대상의 역할만 알면 된다. 클라이언트는 구현 대상의 내부 구조를 몰라도 된다. 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다. 클라이언트는 구현 대.. 2022. 10. 10.
스프링이란? 스프링의 핵심 스프링은 자바 언어 기반의 프레임워크이다. 자바 언어의 가장 큰 특징은 객체 지향 언어라는 점이다. 스프링은 객체 지향 언어가 가진 특징을 살려 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 스프링의 종류 필수 : 스프링 프레임워크, 스프링 부트 옵션 : 스프링 데이터, 스프링 세션. 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 등이 있다. 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 등 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코틀린,.. 2022. 10. 10.
스프링의 탄생(J2EE, Servlet, JSP, EJB 등) J2EE(Java2 Enterprise Edition) 자바를 이용하여 기업 환경의 애플리케이션을 개발하는 데 필요한 스펙을 모아놓은 플랫폼이다. J2EE의 대표적인 구성 요소 Servlet 클라이언트가 보내는 HTTP 요청을 처리하는 서버 측 자바 프로그램 JSP(Java Server Pages) HTML이나 Java 코드를 써서 사용자에게 정보를 출력한다. HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어이다. EJB(Enterprise Java Beans) 스프링의 탄생 전에 스프링과 JPA 등의 기술을 사용할 수 있는 자바의 표준 기술이었다. 그러나, 가격이 매우 비싼 건 물론이고 배우기 어려웠으며 기능이 복잡하고 느렸다.. 2022. 10. 10.
관계형 데이터베이스 설계 관계형 테이터베이스 용어 데이터(data) : 각 항목에 저장되는 값 테이블(table; 또는 relation) : 사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적 칼럼(column; 또는 field) : 테이블의 한 열 레코드(redord; 또는 tuple) : 테이블의 한 행에 저장된 데이터 키(key) : 테이블의 각 레코드를 구분할 수 있는 값(기본키, 외래키 등) 테이블 사이의 관계 1:1 관계 : 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우 1:N 관계 : 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우 N:N 관계 : 여러개의 레코드가 다른 테이블의 여러개의 레코드와 관계가 있는 경우로, JOIN 테이블을 만들어 관리한다. 2022. 10. 6.
트랜잭션과 ACID 30초 요약 트랜잭션 데이터베이스의 상태를 변화시키는 여러 개의 작업을 하나로 묶은 실행 유닛이다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다. Atomicity(원자성) 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패하여야 한다. Consistency(일관성) 데이터베이스의 상태는 하나의 트랜잭션 이전과 이후에 상관없이 일관되어야 한다. ex) 어떤 제약조건이 있을 때 트랜잭션 전, 후에 변화가 제약조건을 지키는 선에서 이루어져야 한다. Isolation(격리성, 고립성) 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다. Durability(지속성) 하나의 트랜잭션이 성공적으로 수행되었다면 이후에 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적으로 보존되어야 한다. 2022. 10. 5.
DBMS & RDBMS & SQL & NOSQL 3분 요약 정리 데이터베이스 데이터를 저장하고 관리하는 곳이다. 구조화된 정보 및 데이터를 체계적으로 관리할 수 있다. DBMS(DataBase Management System) 사용자의 요구에 따라 정보 및 데이터를 생성하고 관리해주는 소프트웨어 SQL(Structured Query Language; 구조화된 쿼리 언어) 데이터베이스 언어로, 주로 관계형 데이터베이스에서 사용한다. 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. NoSQL(No Structured Query Language; 비구조화된 쿼리 언어 ) 데이터의 구조나 형태가 정해지지 않은 것을 의미한다. 관계형 데이터베이스에서 데이터를 입력할 때는 스키마에 맞게.. 2022. 10. 5.
데이터를 저장하는 방법 In-Memory JavaScript에서 변수를 만들어 저장하면, 프로그램이 종료될 때 해당 프로그램에서 사용하던 데이터들도 삭제된다. 프로그램 실행을 위한 변수 등의 데이터가 프로그램의 실행에 의존한다. 이는 예상하지 못한 상황으로부터 데이터를 보호할 수 없고, 종료되면 데이터를 받아올 수 없으며 프로그램의 수명에 데이터의 수명이 의존하게 된다. File I/O 파일을 읽는 방식으로 작동한다. 엑셀 시트나 CSV 같은 파일의 형태를 저장하는 데 적절하지만 한계가 존재한다. 데이터가 필요할 때마다 전체 파일을 매번 읽어야 하므로 파일의 크기가 커질수록 작업이 버거워지고, 비효율적이다. 파일이 손상되거나 여러 개의 파일들을 동시에 다뤄야 하는 등의 복잡한 상황일수록 데이터를 불러오기 힘들어진다. 관계형 데.. 2022. 10. 5.
728x90