Java/정리 46

예외처리

프로그램에서의 오류 ​ ● 컴파일 오류(compile error) 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 개발 환경(eclipse)에서 대부분의 컴파일 오류는 detection 됨 ​ ● 실행 오류(runtime error) 실행 중인 프로그램이 의도 하지 않은 동작(bug)을 하거나 프로그램이 중지 되는 오류 실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 ​ ​ 예외 처리의 중요성 ​ ● 프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록 함 ● 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다 ● 오류가 발생한 경우 log를 남겨서 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요 ​ ​ 오류와 예외 클래스 ​ ● 시스템..

Java/정리 2021.09.01

내부클래스

● 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 ● 중첩 클래스라고도 함 ● 내부 클래스의 종류 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 ​ 인스턴스 내부 클래스 ​ ● 내부적으로 사용할 클래스를 선언 (private으로 선언하는 것을 권장) ● 외부 클래스가 생성된 후 생성됨 ( 정적 내부 클래스와 다름 ) ● private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 OutClass outClass = new OutClass(); OutClass.InClass i..

Java/정리 2021.09.01

Object클래스

java.lang 패키지 ​ ● 프로그래밍시 import 하지 않아도 자동으로 imort됨 ● import.java.lang.*; ● 많이 사용하는 기본 클래스들이 속한 패키지 ● String, System... ​ ​ 모든 클래스는 Object 클래스를 상속 받는다 ​ ● java.lang.Object 클래스 ● 모든 클래스의 최상위 클래스는 ● 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음 ● 컴파일러가 extends Object를 추가함 ● class Student => class Student extends Object ​ toString() 메서드 ​ ● 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임 ● 많이 사용하는 Stri..

Java/정리 2021.09.01

인터페이스 활용예제

패키지 계층구조없이 코드를 완성해 봅시다. 패키지 ex10을 먼저 만들어 주세요. ​ ※ chapter03 생략 ​ 1. UserInfo 클래스 생성 package ex10; // 1 UserInfo 클래스를 만들어 줍니다. public class UserInfo { private String userId; private String password; private String userName; // 멤버 변수가 접근 지시 제어자가 // private 이기 때문에 getter, setter 메서드를 만들어 줍니다. // 단축키 Alt + Shift + s --> Generate getter and setter 클릭 public String getUserId() { return userId; } publi..

Java/정리 2021.08.31

인터페이스

인터페이스란? ​ ● 모든 메서드가 추상 메서드로 선언됨 public abstract ● 모든 변수는 상수로 선언됨 public static final ​ interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); } ​ ● 자바 8 부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있음 ​ ​ ​ ​ ​ 인터페이스 정의와 구현 ​ ​ ​ ​ ​ 인터페이스 구현과 형 변환 ​ ● 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있음 ● Calc calc = new CompleteCalc(); ● 상속에서의 형..

Java/정리 2021.08.31

ArrayList

java.util 패키지에서 제공되는 ArrayList ★★★★★실무★★★★★★ ​ ​ ● 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했음 ● 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 함 ● ArrayList는 객체 배열을 좀더 효율적으로 관리하기 위해 자바에서 제공해 주는 클래스 ● 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용 방법만 익히면 유용하게 사용할 수 있음 ​ ​ ArrayList의 주요 메서드 ​ ​ ​ ArrayList를 활용한 간단한 예제 import java.util.ArrayList; public class ArrayListTest { public s..

Java/정리 2021.08.30

객체 지향 프로그래밍으로 구현해보기 (ex문제)

버스와 지하철을 타는 예제 프로그래밍 James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다. James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다. Tomas는 10000원을 가지고 있었고, 1호선 지하철을 타면서 1200원을 지불합니다. ● 두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다. ​ ​ Student.java public class Student { String studentName; int grade; int money; public Student(String studentName, int money) { this.studentName = studentName; this.money = money; } public void takeBus(B..

Java/정리 2021.08.30

다형성

● 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 ● 같은 코드에서 여러 다른 실행 결과가 나옴 ● 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 ● 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들수 있음 ​ class Animal{ public void move() { System.out.println("동물이 움직입니다."); } public void eating() { } } class Human extends Animal{ public void move() { System.out.println("사람이 두발로 걷습니다."); } public void readBooks() { System.out.println("사람이 책을 읽습니다."); ..

Java/정리 2021.08.30

추상 클래스의 응용 - 템플릿 메서드 패턴

템플릿 메서드 ​ ● 추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드 ● final로 선언하여 하위 클래스에서 재정의 할 수 없게 함 ● 프레임워크에서 많이 사용되는 설계 패턴 ● 추상 클래스로 선언된 상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의 하고 하위 클래스에서 ● 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현 하도록 함 ​ ​ ​ ● 추상클래스 활용 ​ ​ ​ ​ ​ final 예약어 ​ ● final 변수 : 값이 변경될 수 없는 상수 public static final double PI = 3.14; ● final 메서드 : 하위 클래스에서 재정의 할 수 없는 메서드 ● final 클래스 : 상속할 수 없는 클래스..

Java/정리 2021.08.30

추상클래스

추상 클래스란? ​ 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ }) 예) int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 abstract 예약어를 사용 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 ) ​ ​ 추상 클래스 구현하기 ​ 메서드에 구현 코드가 없으면 abstract 로 선언 abstract로 선언된 메서드를 가진 클래스는 abstract..

Java/정리 2021.08.30