전체 글
-
SOLID - SRP, OCP, LSP, ISP, DIPSpring/Spring 2022. 1. 14. 23:34
SOLID SOLID란 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정했는데 그 원칙들의 앞글자를 가져와 SOLID라 부른다. 이 원칙을 알아야 하는 이유는 시스템의 기능이 확장되거나 변동사항이 있을 때, 객체지향적인 설계가 추구하는 점인 기존의 시스템들이 영향을 받지 않도록 하기 위해서이다. SOLID의 5대 원칙 SRP 단일 책임 원칙(Single Responsibility Principle) "어떤 클래스를 변경해야 하는 이유는 오직 하나 뿐이어야 한다." -로버트 C. 마틴 하나의 클래스는 단 하나의 책임만 가져야 한다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 객체 간의 응집도를 최대화하고 객체 간의 결합도를 최소화하는 것이 좋은 프로그램이..
-
백준 5단계 1차원 배열 - 3052 / 1546 / 89587 / 4344알고리즘/백준 2022. 1. 14. 01:54
백준 3052 : 나머지 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 정답 이중 for문을 이용하여 같은 숫자가 있을 경우 count값을 -1 해주었다. import java.io.BufferedReader; import java.io.IOExce..
-
객체 지향 프로그래밍 (OOP, Object-Oriented Programming)Spring/Spring 2022. 1. 13. 22:45
객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 객체 지향 프로그래밍은 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이들이 상호작용으로 서술하는 방식이다. 객체는 하나의 역활을 수행하는 '메소드와 변수'의 묶음으로 볼 수있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어개발에 많이 사용된다. 유연하고 변경이 용이하라는 말이 무엇일까? 바로 바로 객체 지향 언어의 특징 중 하나인 '다형성'을 말한다. 이 다형성으로 클라이언트는 대상의 인터페이스만 알면 인터페이스를 상속받는 인스턴스의 내부 구조를 몰라도 된다. 즉, 클라이언트는 인터페이스를 사용만하면 되기때문에 인스턴스의 내부 구조가 변경되어도 클라이언트는 아무런 영향을..
-
SpringSpring/Spring 2022. 1. 13. 22:25
Spring의 시작 Spring은 개발자라면 1번은 접하게 되는 단어이다. 단어에서 알 수 있듯이 Spring이란 봄을 뜻하는 말이다. Spring이란 이름이 붙여진 이유가 뭘까? 과거에는 서버 어플리케이션의 생산성의 향상과 이동성을 실현하기 위해서 생겨난 Enterprise JavaBeans(EJB)를 사용 하였다. 하지만 이 EJB는 사용하기에 너무 복잡하고 서버를 띄우는데 느렸다. EJB가 제공하는 인터페이스를 다 구현해야했고, EJB에 의존적으로 개발을 해야했기때문에 개발을 하면 할 수록 코드가 복잡해지는 단점과 코드를 테스트하는데 서버가 가동되는 시간이 오래걸렸던점 등 여러 이유로 EJB는 외면받게 되었다. 이러한 EJB를 사용했던 개발자 중 로드 존슨(Rod Johnson)이 EJB의 단점을 ..
-
데이터베이스 모델링(Database Modeling)DataBase/Modeling 2022. 1. 12. 14:29
좋은 모델이란? 좋은 모델이란 단순하고 명확한 모델이다. 경험상 단순한 모델이 좋은 모델이 될 가능성이 크다. 복잡한 것을 단순하게 만드는 것은 데이터베이스 모델링의 핵심이라고 봐도 된다. 하지만 단순하게 모델링한다고 데이터를 보고 성격을 한눈에 판단할 수 있는 명확성을 놓치면 안된다. 데이터 무결성(Integrity)이 보장되는 모델이 좋은 모델이다. 무결성은 모델링의 핵심 요소라 보면 되겠다. 무결성이 훼손된 데이터는 아무리 비즈니스 요구 사항을 충족하고 빠른 성능이 보장된다 해도 좋은 모델이 될 수 없다. 그러므로 데이터 모델링의 최우선 목표는 데이터 무결성을 보장하도록 데이터 모델을 구축하는 것이다. 데이터 무결성 다음으로 고려해야 하는 부분이 성능이다. 무결성 원칙을 다소 포기해서라도 성능이 중..
-
네트워크(Network), 인터넷 프로토콜(IP-Internet Protocol)개발자로서 알아야 할 CS/HTTP 웹 기본 지식 2022. 1. 12. 01:56
네트워크란? Net + Work의 합성어로써 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망 서로 통신을 하기 위해서는 정해진 통신 규칙으로 통신을 하여야한다. 이를 통신 프로토콜이라 한다. 네트워크의 종류 PAN ( Personal Area Network ) : 가장 작은 규모의 네트워크 LAN ( Local Area Network ) : 근거리 영역 네트워크 MAN ( Metropolitan Area Network ) : 대도시 영역 네트워크 WAN ( Wide Ares Network ) : 광대역 네트워크 VAN ( Value Added Network ) : 부가가치 통신망 정보의 축적과 제공, 통신속도와 형식의 변화, 통..
-
백준 5단계 1차원 배열 - 10818 / 2562 / 2577알고리즘/백준 2022. 1. 11. 02:04
백준 10818: 최소, 최대 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 정답 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; publ..
-
Java - 생성자(Constructor)와 this 키워드Java/java study 2022. 1. 9. 16:08
생성자 생성자(Contructor) 란? 객체를 생성할 때 호출되며 객체의 초기화를 담당한다. 디폴트 생성자 : 선언된 생성자가 없을 때 컴파일러가 자동으로 만들어주는 생성자. (소스 X / 매개변수 X) 기본 생성자 : 매개변수가 없는 생성자, 객체 변수의 default 초기화를 해준다. (소스 X / 매개변수 X) 매개변수를 갖는 생성자 : 매개변수가 있는 생성자, 매개변수로 객체 변수 값을 초기화해준다. (소스 O / 매개변수 O) public class Person { private String name; private int age; // 작성된 생성자가 없을시 컴파일러가 자동으로 넣어주는 생성자 public Person() {} // 기본 생성자 public Person() { System.o..