자바

    Near Algoritm - 근사값 알고리즘

    Near Algoritm - 근사값 알고리즘 근삿값 알고리즘: 차이값의 절대값의 최소값 = 근사값 차이값 = (데이터 - 대상값(target)) package nearAlgoritm; //근삿값 알고리즘: 차이값의 절대값의 최소값. //[?] 원본 데이터중에서 대상 데이터와 가장 가까운 값을 구한다 public class NearAlgoritm { //[0] 절댓값 구하기 로컬 함수 // number가 음수면(참) 양수로 변환하고, 양수면(거짓) 양수 그대로 나오는 메서드 public static int Abs(int number) { return (number < 0 ) ? -number : number; } public static void main(String[] args) { //[1] Initi..

    JAVA Basic) 자바 입출력

    목차 대부분의 프로그램은 자료를 입력받는 기능과 저장하거나 쓰는 출력 기능을 구현한다. 음악, 동영상 파일을 재생하는 것도 입출력 기능에 해당되며, 채팅을 하고 SNS에 글, 사진을 피드하는 것도 입출력 기능으로 구현된다. 입출력은 프로그램의 가장 기본 기능이지만, 외부 저장 장치나 네트워크와 연동해야 하기 때문에 장치에 따라 다르게 구현해야 한다. 자바는 장치에 따라 독립적이고 효율적인 입출력 기능을 제공한다. 스트림이란? 자바에서 모든 입출력은 스트림(Stream)을 통해 이루어진다. 자료 흐름이 물의 흐름과 같다는 의미에서 사용되었다. 입출력 장치는 매우 다양하여 장치에 따라 입출력 부분을 일일이 다르게 구현하면 프로그램 호환성이 떨어질 수 밖에 없다. 이런 문제를 해결하기 위해 자바는 입출력 장치..

    JAVA Basic) 내부 클래스 - 연습문제

    목차 Q1. 지역 내부 클래스에서 외부 클래스 메서드의 지역 변수를 사용할 수 있지만, 그 값을 변경하면 오류가 발생한다. 이때 사용하는 지역 변수는 [ ]변수가 되기 때문이다. Q2. 내부 클래스 중 클래스 이름 없이 인터페이스나 추상 클래스 자료형에 직접 대입하여 생성하는 클래스를 [ ]라고 한다. Q3. 자바에서 제공하는 함수형 프로그래밍 방식으로 인터페이스의 메서드를 직접 구현하는 코드를 [ ]이라고 한다. Q4. 람다식으로 구현할 수 있는 인터페이스는 메서드를 하나만 가져야 한다. 이러한 인터페이스를 [ ]라고 한다. Q5. 다음과 같이 두 정수를 매개변수로 하는 메서드가 인터페이스에 정의되어 있다. 두 정수의 합을 반환하는 람다식을 구현하고 호출해보자. package lambda; public..

    JAVA Basic) 내부 클래스

    목차 '내부 클래스(inner class)'는 말 그대로 '클래스 내부에 선언한 클래스'다. 내부에 클래스를 선언하는 이유는 대개 이 클래스와 외부 클래스가 밀접한 관련이 있기 때문. 또한 그 밖의 다른 클래스와 협력할 일이 없는 경우에 내부 클래스로 선언해서 사용한다. 내부 클래스를 간단히 표현하면 아래 그림과 같다. 내부 클래스는 선언하는 위치나 예약어에 따라 크게 네가지 유형으로 나누어진다. 인스턴스 내부 클래스 정적(static) 내부 클래스 지역(local) 내부 클래스 먼저 위 세 가지는 클래스 내부에 선언하는 변수의 유형(인스턴스, 저억, 지역 변수)과 유사하다. 마지막으로 클래스 이름 없이 선언하고 바로 생성하여 사용할 수 있는 익명(anonymous) 내부 클래스 가 있다. 그럼 변수 유..

    JAVA Basic) Class 클래스

    목차 자바의 모든 클래스와 인터페이스는 컴파일되고 나면 class파일로 생성된다. 예를 들어 a.java 파일이 컴파일 되면 a.class파일이 생성되고. 이 class파일에는 클래스나 인터페이스에 대한 변수, 메서드, 생성자 등 정보가 들어있다. 'Class 클래스'는 컴파일 된 class 파일에 저장된 클래스나 인터페이스 정보를 가져오는데 사용된다. 지금까지 변수를 선언할 때 자료형을 미리 파악하고 그 자료형에 따라 변수를 선언했다. 그리고 클래스를 사용할 때도 이미 그 클래스 정보(메서드, 변수 등)를 알고 있는 상황에서 프로그램을 만들었다. 그런데 어떤 경우에는 여러 클래스 중에 상황에 따라 다른 클래스를 사용해야 할 때도 있고, 반환받는 클래스가 정확히 어떤 자료형인지 모를 때도 있다. 이렇게 ..

    JAVA Basic) 인터페이스 - 연습 문제

    목차 Q1 클래스가 인터페이스를 구현하기 위해 사용하는 예약어는 [ ]이다. Q2 클래스가 인터페이스를 구현할 때 인터페이스에 선언한 메서드를 모두 구현하지 않으면 그 클래스는 [ ]가 된다. Q3 인터페이스에 선언한 변수는 컴파일할 때 [ ]로 변환된다. Q4 한 인터페이스를 여러 클래스가 다양한 방식으로 구현한 경우에 프로그램에서 인터페이스에 선언된 메서드를 사용할 때 각 클래스의 구현 내용과 상관없이 도잉ㄹ한 방식으로 사용할 수 있다. 이렇게 같은 코드가 여러 구현 내용으로 실행되는 객체 지향 특성을 [ ]이라고 한다. Q5 인터페이스에서 구현한 코드를 제공하는 메서드는 [ ] 와 [ ]이다. Q6 한 클래스에서 여러 인터페이스를 구현할 수 있다. [ 예 / 아니오 ] Q7 숫자 정렬 알고리즘에는 ..

    JAVA Basic) 인터페이스 활용

    목차 한 클래스가 여러 클래스를 상속받으면 메서드 호출이 모호해지는 문제가 발생할 수 있다. 하지만 인터페이스는 한 클래스가 여러 인터페이스를 구현할 수 있다. package interfaceex; public interface Buy { void buy(); } package interfaceex; public interface Sell { void sell(); } 그림을 보면 Customer클래스는 Buy와 Sell 두 인터페이스를 구현하고 있다. Buy인터페이스에 추상 메서드 buy()가 선언. Sell인터페이스에 추상메서드 sell()이 선언. package interfaceex; public class Customer implements Buy, Sell{ // Customer클래스는 Buy와..

    JAVA Basic) 인터페이스(interface)

    목차 구현 코드가 없는 인터페이스 인터페이스(interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적 선언하는 역할. 추상 메서드와 상수로만 이루어짐. 구현된 코드가 없어서 당연히 인스턴스를 생성할 수 없다. 이러한 인터페이스는 어떻게 사용되어지는지 간단한 계산기를 만들어보자. - calc 인터페이스 package interfaceex; public interface Calc { double PI = 3.14; int ERROR = -999999999; // 멤버변수는 public static final(상수)로 자동 선언됨 int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); ..

    JAVA Basic)상속과 다형성 - 문제 풀이

    목차 Q1 자바에서는 어떤 클래스의 기능을 확장하여 새로운 클래스를 만들기 위해 상속을 한다. 이때 사용하는 예약어는 [ ]이다. Q2 하위 클래스가 상위 클래스의 생성자를 호출하거나 상위 클래스의 멤버 변수, 메서드를 호출하기 위해 사용하는 예약어로 상위 클래스의 주소, 즉 참조 값을 나타내는 예약어는 [ ]이다. Q3 클래스를 상속받은 상태에서 상위 클래스에 이미 정의되어 있는 메서드를 하위 클래스에서 사용하기 위해 적절하지 않은 경우에 해당 메서드를 재정의할 수 있다. 이것을 [ ]라고 한다. Q4 다음 코드는 오류가 발생했다. 오류가 발생한 원인을 설명하라. package practice; public class Employee { public String name; public String gr..

    JAVA Basic) 다운 캐스팅과 instanceof

    목차 앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아봤다. 여기에서 다시 하위 클래스로 형 변환이 되는 과정을 알아보자. 위와 같은 계층 구조에서 상위 클래스 자료형으로 선언하는 코드가 가능하다. Animal = new Human(); // 상위 클래스 자료형으로 선언 이때 생성된 인스턴스 Human은 Animal형입니다. 이렇게 Animal형으로 형 변환이 이루어진 경우엔 Animal의 메서드와 멤버 변수만 사용이 가능하다. 따라서 필요에 따라 다시 원래 인스턴스의 자료형으로 되돌아가야 하는 경우가 필요하다. 이렇게 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 '다운 캐스팅(down casting)이라고 한다. instanceof 상속 관계를 생각..

    JAVA Basic) 다형성 활용하기

    목차 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 굉장히 편리하다. 여기에 배열까지 함께 사용하게 되면, 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있게 된다. 새로운 요구 사항이 발생했다..! [예제 시나리오] 고객이 늘어 VIP등급 보다 물건을 많이 구매하진 않지만, 그래도 혜택을 주는 등급(GOLD)을 추가하고 싶습니다. -제품을 살 때는 항상 10% 할인. -보너스 포인트 2% 적립 -담당 전문 상담원 X 새로운 고객 등급이 생겼다. 이 등급의 고객은 VIP고객과 보너스 포인트 적립률이 다르고, 담당 상담원이 없다. 이 내용을 기반으로 Customer클래스를 상속받아 'GoldCustomer클래스'를 만들어보자. 고객 관리 시스템은 다음과 같은 계층구조로 확장될..

    JAVA Basic) 다형성

    목차 묵시적 클래스 형 변환과, 가상메서드를 바탕으로 객체 지향의 중요한 특성인 '다형성(polymophism)'을 알아보자. '다형성'이란, 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다. 쉽게 말하면, 같은 코드에서 여러가지 실행 결과가 나오는 것이다. 3개의 클래스가 Animal클래스를 상속받은 상황이다. Animal클래스에서 메서드를 하나 정의하고 상속받은 클래스에서 재정의하는 코드를 구현해보자. package polymorphism; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move(){ System.out.println("사..