STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자 입니다. STL은 사람마다 조금씩 다른 정의를 내립니다. C++권위자인 Scott Meyers는 STL을 "반복자를 가지고 동작하는 C++ 표준 라이브러리의 일부분"이라고 정의했습니다. STL은 우리가 C++프로그래밍에서 만들어야 하는 여러가지 자료구조 클래스와 알고리즘 등을 미리 만들어 놓은 라이브러리로 반복자라는 놈을 통해서 동작하는 라이브러리입니다. STL의 주요 구성요소 컨테이너(Container) : 객체들을 저장하는 개개체 혹은 클래스(vector, list, string, map) 반복자(iterator) : 컨테이너에 저장된 요소를 순회하고 접근하는 객체 혹은 클래스(추상화) 알고리즘(Algo..
객체 - 동일한 성질의 데이터와 메서드를 모아두고 필요할 때 언제든지 이용할 수 있게 만들어 놓은 것 객체지향- 객체의 성격을 지향하는 프로그래밍- 객체들간의 메시지를 주고 받는 구조- 독립적, 대규모 클래스- 데이터와 메서드가 결합- 객체를 만들기 위한 틀- 각각의 특징을 지닌 객체들의 속성을 묶어 놓은 집합체- ex) '학생'이 클래스, '영희'와 '철수'는 객체 생성자- 객체 지향 프로그래밍에 쓰이는 객체 초기화 함수- 객체의 생성 시에만 호출되어 메모리 생성과 동시에 객체의 데이터를 초기화하는 역할 오버라이딩- 기존에 있는 메서드를 재정의하는 것으로 매개변수의 개수나 데이터 형식이 같아야 함- 상위클래스 또는 인터페이스의 메서드를 하위 클래스에서 재정의 하는 것 오버로딩- 메서드 이름은 같지만 매..
원래 자바 1.8 버전을 사용하다가 자바 10으로 업그레이드한 후 몇 달전에 만들었던 jsp 프로그램을 오랜만에 실행시키려하다가 갑자기 이런 에러가 나는 것을 발견했다 could not create the Java Virtual Machine 이라는 에러는 예전에 봤던 기억이 있지만 콘솔창에 나오는 endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules. 라는 에러는 처음 보는 에러라서 조금 당황스러웠다. 그래도 해결할 수 있다는 생각으로 구글링을 하기 시작했다. 몇 가지 해결법이 나와 있었는데 eclipse.in..
개요 이클립스(Eclipse software) 를 Oxygen 버전에서 Photon 버전으로 업데이트 를 하는 과정을 기록해두었습니다. 업데이트 과정 전체 과정 요약 1. Available Software Sites 에 '새로운 릴리즈 링크' 추가 2. 'Check for Updates' 를 눌러서 업데이트 진행 (1) Available Software Sites 설정에 들어가는 과정 1. [Windows] > [Preferences] 2. [Install/Update] > [Available Software Sites] 선택 3. [Add] 클릭 후 링크 값을 추가함. 추가할 Link : https://download.eclipse.org/releases/photon/ (2) Check for Upda..
ArrayList를 정렬하는 방법은 Collections.sort() 함수를 통해 가능합니다. Collections.sort() 함수는 두 가지 형태에 대해서 오버라이딩이 되어 있습니다. 첫 번째 함수 형태는 하나의 인자 정보를 넘겨주는 형태로 ArrayList 객체를 넘겨줍니다. 이때 ArrayList에 담기는 요소의 Type 클래스에서 Comparable 인터페이스를 구현하여 compareTo() 함수를 오버라이딩 해줘야합니다. 두 번째 함수 형태는 첫 번째 인자를 ArrayList 객체를 넘겨주게 되고 두 번째 인자는 Comparator 인터페이스를 상속받아 compare() 함수를 오버라이딩한 구현체를 넘겨주게 됩니다. 1. Integer Type Data를 요소로 가지는 ArrayList imp..
람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다. 람다의 특징 람다 대수는 이름을 가질 필요가 없다. - 익명 함수 (Anonymous functions) 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링 (Curring) 익명함수? 익명함수란 말그대로 함수의 이름이 없는 함수입니다. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있습니다. 이 일급 객체란..
MVC 패턴(Model, View, Controller) - Model과 View사이에 Controller가 있음 - MVC 패턴의 가장 큰 장점은 비즈니스 로직과 프리젠테이션 로직이 분리되어 있어서 디자이너와 개발자의 영역이 분리됨으로써 서로 각자의 영역에 더 집중할 수 있음 -> 유지보수가 용이함 Model Component - 핵심기능, 데이터 처리 등 주로 DB쪽을 담당함 - 핵심기능과 데이터를 캡슐화하여 입출력에 영향을 받지 않고 독립적으로 움직임 - DTO, DAO 등 비즈니스 로직 - 대부분의 java 파일은 전부 Model - 비즈니스 데이터는 DBMS에 의해 관리, 그 데이터를 다루는 연산은 SQL문을 통해서 구현함 View Component - 주로 디자인에 관련된 부분으로 사용자에게 ..
- 작업지시서라고도 한다. - 다형성을 가능하게 한다. 만약 팀장이 두명의 직원에게 Interface를 만들어 놓고 Interface를 implements해서 작업하라고 지시를 하였습니다. 두명의 직원은 인터페이스를 상속 받을 경우 무조건 인터페이스 내의 메서드를 다 작업해야 하기 때문에 1) 사용해야 하는 메서드를 알고 2) 정해진 메서드의 이름으로 작성할 수 있습니다. 하지만 인터페이스가 없다면 두 직원은 각자가 생각했을 때 필요한 메서드를 만들것이고, 각자의 마음대로 메서드명을 작성하게 되겠죠. 이렇게 각각의 개성이 가득 담긴 내용을 추후에 합치게 될 때 메서드명과 메서드의 개수 등을 다시 수정해야 하는 번거로움이 생기게 됩니다. 인터페이스의 특징 - 추상 메서드와 상수만이 존재 : 상수는 priv..
추상메서드 정의 : 내용이 없는 메서드, 구현(정의)는 하지 않고 선언만 한 메서드 목적 : 메서드의 내용이 너무 일반적인 내용이라 부모 클래스에서 구체화하여 정의할 필요가 없을 경우, 추상메서드로 선언만하고 상속받은 자식 클래스에서 재정의하도록 할 때 사용 추상클래스(abstract class) 정의 : - 한 개 이상의 추상메서드를 가지는 클래스 - 일반적인 클래스는 세부적이고, 구체적 ex) 고양이과, 개과 - 반면 추상클래스는 일반클래스에 비해 구체적이지 않고 추상적 ex) 고양이, 사자, 강아지 목적 : 추상메서드는 선언만되고 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되어서는 안됩니다. 이런 클래스(추상메서드가 포함된 클래스)는 추상클래스로 선언하여 객체 생성을 금지시킵니다. 추상클래스..
자바에서 다형성을 지원하는 방법으로 메서드 오버로딩과 오버라이딩이 있습니다. 오버로딩(Overloading) : 같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술 오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용 서로 개념은 다르지만 이름이 비슷해서 헷갈리는 경우도 있고, 신입 개발자의 경우 면접 단골 질문이기도 하니 하나하나 예제를 살펴보겠습니다. 오버로딩(Overloading) 오버로딩은 메서드 오버로딩과 생성자 오버로딩이 있습니다. 하지만 둘 다 같은 개념이에요. 같은 이름의 함수(메서드)를 여러개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답할 수 있게됩니다. 예제소스) class Ov..
- Total
- Today
- Yesterday