일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 타입정의
- 집합관계
- Abstraction Barrier
- collctionframwork
- Abstractin
- postcondition
- 가변객체
- 뮤택스
- 의존관계
- 조선대 nhn
- 조선대 nhn academy
- list
- nhn 부트캠프
- dynamic checking
- DI
- 제어역전
- static checking
- interface
- 추상화
- 추상클래스
- java
- abstraction
- 합성관계
- 전후조건
- 자바
- Collection
- abstract calss
- 버그줄이기
- Iversion of Control
- Dependency Injection
- Today
- Total
목록프로그래밍 기초/전산학 기초 (9)
꾸준한 기록을
[Immutable Vs Mutable]프로그램의 오류는 예기치 못한 동작으로 인해 발생하게 됩니다. 이 예기치못한 동작을 줄이고 예측 가능하게 동작시키려면 어떻게 설계해야 할까요?? 자바는 생성된 이후 상태를 변경할 수 있는 Mutable Type과 그렇지 않은 Immutable Type이 존재합니다. 지금부터 각 타입의 특징과 장단점에 대해 알아보겠습니다.Immutable Type (불변 타입)Immutable Type은 생성된 후 상태를 유지하는 타입을 의미합니다. 대표적인 예시로 String 이 존재합니다.String Class value , coder 등등의 field가 final로 선언된 것을 볼 수 있습니다. 이를 통해 String Type을 불변객체로 만드는 것이죠 하지만 우리는 한가지 의..
Specification 프로그램에서 터지는 버그는 대부분 동작에 대한 오해로 발생합니다. 이러한 동작의 오해를 줄이기 위한 대표적인 방법으로 Spec(명세)이 존재합니다. 또한 완성된 프로그램은 필수적으로 Spec을 갖고있어야 합니다. 그렇다면 Spec은 무엇을 의미하는 걸까요?? 다음은 실제로 사용되는 BigInteger 클래스 Spec입니다. Class BigInteger public BigInteger add(BigInteger val) Returns a BigInteger whose value is (this + val). Parameters: val - value to be added to this BigInteger. Returns: this + val add 메서드의 Signature와 실..
Collection FramWork 자바는 Collection FramWork를 제공합니다 이 안에는 대부분의 자료구조가 존재합니다. List, Map, Set, Tree... 또 기본적으로 Collection은 Parameterized Type을 사용합니다. Collection을 한마디로 정리하면 자료를 다루는 방법과 저장하는 구조가 다른 Abstract Data Type의 집합입니다. 따라서 용도에 따라 어떤 자료구조를 사용할 것인지 잘 이해했다면 Collection FrameWork를 이해했다고 볼 수 있습니다. List List Interface를 상속받는 구현체는 대표적으로 ArrayList, LinkedList 가 존재합니다. 둘다 같은 List를 상속받아 구현체로써 사용되지만 , 구현할떄 사..
Abstract Class Vs Interface Abstract Class(추상클래스) 와 Interface(인터페이스)는 어떤 차이가 있을까요? 기능적인 차이점 부터 알아보겠습니다. 추상클래스 타입에 제한없는 변수 메서드 제한 없음 extend KeyWord로 상속 다중 상속 불가능 인터페이스 static final 상수 변수 abstract method , default method implements KeyWord로 상속 다중 상속 가능 보다 다양한 차이점이 있지만 크게 4가지만 간추렸습니다. 여기서 중요한것은 단순히 기능적인 차이점이 아니라 어쨰서? 입니다 왜 이런 기능적인 차이가 있는걸까요? 지금부터 왜? 에 대해서 알아보겠습니다. (이 글은 클래스의 Implementation과 Abstrac..
클래스란 클래스란 특정한 타입을 지정하는것을 의미합니다. 우리는 이미 자바에서 제공하는 Primitive Type을 사용하고있습니다. (byte,short,int,long,folat,double,boolean,char) 이 Type은 각각 특정한 목적을 가집니다. 정수를 표현하기 위한 byte,short,int ,long (1,2,4,8 byte로 표현가능한 크기가 다름) 실수를 표현하기 위한 float , double (4,8 byte로 표현가능한 크기가 다름) 참,거짓을 표현하기 위한 boolean 문자를 표현하기 위한 char 이렇게 타입은 특정한 목적을 가지고 설계됩니다. 우리가 만드는 클래스또한 타입을 정의하는 것으로 , 특정한 목적을 가지고 연산을 수행하게 됩니다. 따라서 "클래스를 작성한다"..
Abstraction(추상화)란? 자바에서는 추상클래스 , 추상메서드 , 추상화 등 "추상"이라는 말이 자주 쓰입니다. 그렇다면 추상화란 무엇일까요? 추상화는 프로그래밍에서 매우 중요한 개념 중 하나이며 매우 큰 범위를 지칭하는 말로 데이터나 절차를 단순하게 표현하여 간추리는 것을 의미합니다. 또한 Abstraction을 추상화라고 직역하는 것도 상당히 어폐가 있음으로 추상화를 전부 Abstraction으로 지칭하겠습니다. 이제 Abstraction을 크게 2가지로 포괄적으로 이해해보겠습니다. 1. Data를 간략화 시킨 Data Abstraction 2. 절차를 간략화 시킨 Procedure Abstraction (단순히 코드를 Extends하여 상속받는 것 또한 Code Abstraction에 속합니..
[Static Vs Dynamic] Series Static은 정적이며 Dynamic은 동적이라는 의미를 담고 있습니다. 또한 자바에서는 Static이라는 키워드를 자주 볼 수 있습니다. Ex) public static void main(String[]args) public static int num =5; Static은 변수와 메서드에 하나의 키워드로 사용됩니다. Static은 컴파일 시간에 동작한다는 개념입니다. 이를 통해 컴파일 시간에 어떤 동작이 일어날지 알 수 있습니다. 반면, Dynamic은 실행 시간에 뭔가가 동작한다는 개념입니다. 이는 프로그램이 실제로 실행될 때 동작이 결정된다는 의미입니다. 이런 개념을 기반으로 쓰임의 차이를 알아보겠습니다. Static Typing Vs Dynamic ..
자바에서의 Thread Safety Concurrency Programing 이란 여러개의 작업을 동시에 처리하는 프로그래밍 방식입니다. 실제로 우리가 사용하는 대부분의 서비스들은 다중 프로세스 및 스레드를 사용해 동시에 여러 작업을 수행합니다. 하지만 여러 작업들이 동시성을 갖고진행되기 때문에 프로그램은 복잡해지며 다음과 같은 문제들을 야기할 수 있습니다. Race Condition 으로 인한 결과값 변동 Deadlock , Concurrency Bugs 같은 버그 Synchronized Overhead 같은 성능 문제 이 글에서는 위와같은 문제들을 해결하기 위한 Thread Safety를 집중적으로 다룰 것 입니다. 1. Thread Safety의 필요성 Thread Safety는 왜 필요할까요? 또..