Language/Java
JAVA 라이브러리 - 컬렉션
| 컬렉션이란? - 자바에서 자료구조를 구현한 클래스를 말한다. - 컬렉션을 추상적으로 구분한 분류는 크게 아래와 같다. - 단, 실제 Collection을 상속하는 건 List와 Set, Queue이며 Map은 별도의 인터페이스이다. - Collections를 통해서 List를 정렬할 수 있으며, Set이나 Map의 경우 TreeSet과 TreeMap을 쓰면 data가 정렬되어 저장된다. 구분 하위 클래스 중복 순서 List ArrayList, LinkedList, Vector, Stack(Vector 상속) o o Set HashSet, LinkedHashSet, TreeSet x - Map Hashtable, HashMap, LinkedHashMap, TreeMap key x, value o - |..
JAVA 라이브러리 - 제네릭 클래스
| 제네릭이란? [사전] Generic = 일반적이다 [정의] 하나의 코드로 여러 타입을 동시에 처리하는 기술 1. 타입 변수 표기법 - 제네릭에 지정하는 타입 변수 이름은 지정하는 사람의 마음이지만, 적어도 그 타입 이름을 사용하는 클래스 또는 인터페이스 내에서는 통일성있게 사용하게 한다. - 일반적으로 변수명과의 구분을 위해 한 개의 대문자로 표시하는 것이 관례이다. - 타입 매개 변수는 기초 자료형으로 객체화될 수 없다. T Type E Element(요소) N Number K Key V Value S,U,V..... 2. 제네릭 클래스 - 최상위 클래스 Object를 사용하면 어떤 타입의 인스턴스건 참조할 수 있다. (업캐스팅, 다형성) - 이러한 원리를 이용해서 클래스를 작성할때 데이터 타입을 ..
JAVA 라이브러리 - 날짜, 시간 관련 클래스(java.util/java.time..)
| 날짜, 시간 관련 클래스 1. 날짜 데이터는 언제 쓸까? - 날짜 및 시간에 관한 데이터는 아래의 예시와 같이 다양한 웹 or 앱 서비스에서 사용하고 있다. - 일반적인 회원가입일자 - 쇼핑몰의 주문일자 - 그룹웨어 회의일자 및 시간/장소대여일자 - 모바일앱 특정시간에 알람 - 등등 2. Java의 날짜 및 시간 관련 클래스 - 날짜 객체는 JDK업데이트 과정에서 Data -> Calender -> LocalDate로 발전하였다. (1) Date today = new Date(); 와 같이 Date 객체만을 사용해서 날짜를 표현 (2) Date today = Calendar.getInstance().getTime(); - Calendar를 통해 싱글톤 방식으로 인스턴스 생성하여 사용 (3) Local..
JAVA 라이브러리 - Java.lang 패키지
| Java.lang 패키지 - 가장 기본이 되는 클래스를 담고 있으며, import 없이 사용 가능하다. - Oracle에서 제공하는 java.lang 패키지에 대한 상세 정보는 아래 링크에 (JDK8 기준) https://docs.oracle.com/javase/8/docs/api/java/lang/package-summary.html - 아래 표는 위 링크에서 소개하는 java.lang의 인터페이스와 클래스 중 자주 사용할만한 것만 일부를 가져온 표이다. Interface Class Comparable Object Cloneable Math Runnable Process Readable Thread Thread.UncaughtExceptionHandler String Iterable System ...
객체지향 언어의 특징 4_캡슐화 (정보 은닉)
| 캡슐화 (정보 은닉) 앞에서 상속과 다형성을 이야기할 때, 캡슐화의 원칙에 대해 언급했었다. - 상속의 단점으로 상위 객체의 정보가 하위 객체에서 노출될 수 있고, 그것은 곧 캡슐화의 원칙을 깨는 것이라고 했다. - 다형성 또한 instanceof를 통해 부모가 참조하고 있던 실제 자식 인스턴스를 외부에서 노출하면 캡슐화의 원칙이 깨졌다. 여기에서도 유추할 수 있는 캡슐화의 의미는 "정보 은닉"이다. 캡슐화 : 정보를 객체 내부로 숨겨 외부로부터 감추는 것 | 접근 제어자와 참조변수 1. 접근 제어자의 UML 표현 - private 자기 자신만 접근 가능 ~ default 같은 패키지 내 # protected 상속 또는 같은 패키지 내 + public 모두가 접근 가능 _ static - - 캡슐화를..

객체지향 언어의 특징 3_다형성 (사용 편의성)
| 다형성 (사용 편의성) 다형성이란, 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미한다. 다형성은 오버로딩과 오버라이딩을 통해 구현할 수 있다. 오버라이딩이 가능한 이유는 뭘까? 그건 동적 바인딩 때문이다. 여기서 동적 바인딩이란 메서드가 실행 시점에서 성격이 결정되는 것을 말한다. 종류 정적바인딩(static binding) 동적바인딩(Dynamic binding) 정의 컴파일 시간에 성격이 결정 실행 시간(런타임)에 성격이 결정 예시 C언어 컴파일 시간에 변수의 데이터타입이 결정 ex. int *p; -- 미리 데이터타입 지정 javascript 런타임에 값에 따라 변수의 데이터타입 결정 ex. var c = 1; -- 미리 데이터타입 지정x ex. Person p = new Person(..

객체지향 언어의 특징 2_상속 (재사용 + 확장)
| 상속 (재사용 + 확장) - 부모 - 자손의 상속 관점 보다는, 재사용과 확장으로 접근하는 것이 좋다 - 상속은, 상위 클래스의 특성을 하위 클래스에서 재사용하고, 거기에 덧붙여 확장할 수 있는 것을 말한다. - 관계 : 상위 - 하위 / 슈퍼 - 서브 * 상위로 갈수록 추상화, 일반화되며 * 하위로 갈수록 구체화, 특수화된다. - 상속을 표현하는 문장 구분 - 설명 포함 has a 클래스 내에서 인스턴스를 형성하여 사용 상속 is a kind of 클래스를 extends (확장하다) 구현 is able to 인터페이스를 implements (구현하다) - 오버라이딩 : 상속 관계에 있는 상위 클래스로부터 물려 받은 메소드를 재정의한 것 | 상속의 장단점 장점 - 모듈화*를 통한 재사용 - 유지보수가..
객체지향 언어의 특징 1_추상화 (모델링)
| 추상화 (모델링) - 현실 세계의 객체에서 필요한 부분만 뽑아 클래스로 만드는 작업을 말한다. 추상화란 구체적인 것을 분해하여 관심 영역에 있는 특성만 가지고 재조립하는 것(= 모델링) [출처] 스프링 입문을 위한 객체 지향의 원리와 이해 | 추상화가 모델링인 이유 관심 영역(앱의 경계)에 따라 클래스 모델링이 달라진다. - 현실 세계에서 물리적으로는 동일한 실체에 대해서도 관심 영역(여기서는 애플리케이션에 적용할 영역)이 어디냐에 따라서, 클래스 모델링이 달라진다. Ex. 사람(객체)을 동물로 본다면 "다리 갯수", "자손 생식 방식" 등을 보겠지만, 고객으로 본다면 "연령대", "지출금액" 등을 볼 것이다. | 추상화의 예시 [1] 상속을 통한 추상화와 구체화 - 상속 관계에서 상위 클래스로 올라..
객체지향 프로그래밍이란?
| 객체지향 프로그래밍 / 절차지향 프로그래밍 절차 지향 프로그래밍(PP) 객체 지향 프로그래밍(OOP) 특징 일련의 동작(모듈, 함수)를 순차적으로 실행 객체(속성 + 기능) 간의 상호작용을 이용 포커스 명령어의 순서와 흐름 데이터의 속성(필드)과 기능(메서드) 장점 컴퓨터의 처리구조와 비슷해 속도가 빠르다 재사용성(상속), 유지보수 용이, 자연스러운 모델링* 단점 규모가 커질 수록, 추가 개발 및 유지보수 어려움 느린 개발 속도와 실행 속도. 높은 난이도 * 객체지향 프로그래밍은 하나의 방법론이지, 그것이 언어나 제품을 의미하는 것은 아니다. * OOP나 PP 외에 CBD(Component-based development), SOA(Service-orient development)등 프로그래밍 방법론..

자바 설치부터 제어문까지 기본 핵심 복습
| 개발 환경 구축 (1) 자바 환경 구축 - 자바는 JVM을 통해 모든 플랫폼(OS)에서 독립적으로 작동한다. - 오라클사에서 JDK를 다운할 수 있다.(또는 openJDK 사용) 설치 사이트 바로가기 - 명령프롬프트(CMD)로 설치 환경 확인 HTML 삽입 미리보기할 수 없는 소스 - 시스템 환경 변수 설정 변수명 경로 예시 Path java.exe가 있는 경로 %JAVA_HOME%\bin JAVA_HOME jdk폴더 경로 C:\myDev\jdk1.8.0_333 rf. 코딩 폰트 설치하기 : d2coding, jetbrains mono 폰트 rf. 맥에서 자바 설치하기 : [1] homebrew 설치 [2] 터미널에서 자바 설치 더보기 [ 시스템 환경 변수 - Path는 왜 넣는 걸까? ] 운영체제(..