Java 코드연습 49

[뉴렉처] 예외처리에서 예외란 무엇을 말하는가?

*구문오류 - 오타, 잘못 적어서 생기는 문제 *논리오류 - 내가 맞다고 생각하는 코드가 실제로 문제가 발생했을때, 논리오류는 해결하기 위해 가상의 테스트를 시간을 들여 진행하기도 한다. *예외 - 예를 들어 물리적으로 문제가 발생할 경우, 하드디스크에서 자료를 읽어와야 하는데 하드디스크 자체에 문제가 발생한 경우, 치명적인 문제는 아니지만 사용자가 입력값을 잘못 입력할 경우

[뉴렉처] 인터페이스를 구현하는 위치는?

인터페이스를 구현할때 구현하는 위치는 새로운클래스에서 구현하는 경우는 많지는 않고 클래스가 필요로 하는 클래스가 있어야할 위치를 가지고 구현하게 된다.? 아직은 좀 이해가 안되고 더 봐야할 것 같다. https://www.youtube.com/watch?v=DCDz131Qo0w&list=PLq8wAnVUcTFX4E2NplMvJfqlcgAeF_BxK&index=35 import java.awt.Frame; import java.awt.event.WindowListener; public class Program { public static void main(String[] args) { GameFrame frame = new GameFrame(); //WindowListener listener = new G..

[뉴렉처] 일부 기능을 분리하는 인터페이스

https://www.youtube.com/watch?v=BSEdMmBXKHg&list=PLq8wAnVUcTFX4E2NplMvJfqlcgAeF_BxK&index=34 뉴렉처 동영상 강의 같은 계열의 개체를 바꿔 끼는것은 추상클래스로 변경 구조가 다른 개체를 바꿔야 한다면 인터페이스로 변경 일부 객체중에서 일부는 내가 지금 당장 결정할 수 있는 기능이 아니다라고 판단됐을때 나중에 결정이 되면 알아서 구현해 달라고 할때 인터페이스 처리함 *예제 페인트라는 메소드를 재정의(오버라이드) 함으로써 프레임이 갖고있는 영역의 일부를 내가 원하는 모양으로 그릴 수 있게됨 지금 이 프레임을 닫기 버튼을 눌러도 닫아지지 않는데 그 이유가 인터페이스와 연관이 있다. 사용자에게 이 창을 정말 닫을 것 인지 그런 기능을 구현해..

[뉴렉처] 새로운 객체로 바꾸기(문자열을 읽어서 객체로 만들기)

https://www.youtube.com/watch?v=YZzpGtpW2h0&list=PLq8wAnVUcTFX4E2NplMvJfqlcgAeF_BxK&index=34 뉴렉처 동영상 강의 패키지 안에 메모장 생성, 메모장 안에는 Exam_1.인터페이스.B 라고 입력 FileInputStream을 통해서 경로받은다음 Scanner을 통해서 입력하고 둘다 닫아준다. 예외처리는 모두 던지기로 결합을 바꿔볼 다른 클래스 생성 하여 인터페이스 X 상속 메모장 setting의 문자를 B->C로 바꾸기만 했는데 결합이 변경되었다. *정리 외부파일의 문자열 가지고 클래스파일의 정보를 얻을 수 있고 그걸 통해서 새로운 인스턴스를 만들 수 있다. 오직 new만 인스턴스를 만들 수 있는게 아니고 메소드 통해서도 인스턴스를 만..

[뉴렉처] 객체 단위로 분리/결합을 위한 인터페이스 구현하기

결정지어지지 않았거나 나중에 교체가 될 수 있는 부분을 인터페이스로 만들어서 후에 결정될 수 있게함 기업용 어플리케이션이나 유지보수가 필요 할때 인터페이스가 필요하다. 인터페이스 구현하는 4가지 상황 package Exam_1.인터페이스; public class Program { public static void main(String[] args) { A a = new A(); a.print(); } } 안에서 결합하는 일체형 결합상태 package Exam_1.인터페이스; public class A { private B b; public A() { b = new B();// private B b를 사용하기 위해 생성자로 결합 } public void print() { int total = b.total..

[뉴렉처] 추상클래스와 인터페이스의 차이

추상화 공통분모의 자료나 기능을 모아서 집중화를 할 수 있다. 그리고 자식클래스들의 관리가 쉬워진다. 인터페이스 필요한 기능을 선택해서 다수를 연결할 수 있다. 필요한 인터페이스를 가져다가 구현하여 도킹하면 사용이 가능해진다. 파일 저장기능과 분석기능을 둘다 사용할 수 있음 추상화처럼 종속된 느낌이 아님

[뉴렉처] 이벤트 메소드 구현하기(팩토리 메소드 구현하기 이어서)

https://www.youtube.com/watch?v=WEm6Bhc3vOc&list=PLq8wAnVUcTFX4E2NplMvJfqlcgAeF_BxK&index=28 동영상 강의 전체를 다시 오버라이드 하기에는 오버니까 아래처럼 해야함 추상메소드를 통해 새로 추가되는 부분만 자식에게 오버라이드 맡기고 부모는 기존에 가지고 있는 국어, 영어, 수학 부분만 책임지게함 package Exam_1.추상화; import java.util.Scanner; public abstract class ExamConsole { private ExamList list = new ExamList(); void input() { //앞에 private 있으면 호출 안됨 다른 클래스에서 못씀 Scanner scan = new Sc..

[뉴렉처] 팩토리 메소드 구현하기

지금 현재 Exam이 추상클래스로 되어있기 때문에 ExamConsole에서 Exam을 객체로 생성하여 활용하는곳에서 오류가 발생하고 있다. 추상메소드를 가지려면 그 울타리인 클래스도 추상클래스로 변경해야함 package Exam_1.추상화; import java.util.Scanner; public abstract class ExamConsole { private ExamList list = new ExamList(); void input() { //앞에 private 있으면 호출 안됨 다른 클래스에서 못씀 Scanner scan = new Scanner(System.in); System.out.println("--------------------"); System.out.println("성적입력"); ..

[뉴렉처] 팩토리 메소드(Factory Method)

(input에서 성적을 입력받아야함) Exam이 추상메소드가 되었기 때문에 Exam을 객체 생성해서 사용하던 ExamConsole은 Exam을 객체 생성할 수 없어지기때문에 문제가 발생한다. ExamConsole 클래스도 추상클래스로 변경하고 안에는 Exam의 자료를 활용할 수 있도록 makeExam 추상클래스를 protected로 만든다. NewlecExamConsole이 ExamConsole 추상클래스를 상속받고 그안의 추상메소드 makeExam()을 오버라이드 한다. input 메소드안의 오류를 해결함 메인프로그램은 ExamConsole이 아닌 NewlecExamConsole을 통해서 실행 NewlecExamConsole 클래스처럼 메소드를 생성하는 구조를 팩토리메소드라고 한다.