컴퓨터
-
예외처리컴퓨터/Java 2019. 9. 4. 17:59
출처 : 자바프로그래밍 입문 강좌(인프런) - 프로그램에 문제가 발생했을 때 시스템 동작에 문제가 없도록 사전에 예방하는 코드 - cf) 컴파일 언어의 장점 컴파일이라는 불필요한 과정을 거쳐야 하지만 장점이 있다. 컴파일 과정에서 발견되는 오류는 미리 디버깅 할 수 있다는 것! 컴파일에서 발견되지 않는 오류는... - 예외란 프로그램에 문제가 있는 것 - Exception vs Error Exception: 개발자가 대처할 수 있음, 코딩 상의 문제가 있는 경우(0으로 나눌 때 등) Checked Exception : '예외처리'를 반드시 해야하는 경우(네트워크, 파일시스템 등) Unchecked Exception : 예외처리를 개발자의 판단에 맡기는 경우(데이터 오류 등), 혹시나 하는 마음에 자발적으..
-
람다식컴퓨터/Java 2019. 9. 4. 16:20
-람다식이란 익명함수(anonymous function)를 이용해서 익명 객체를 생성하기 위한 식 인터페이스에 선언만 해놓고 따로 클래스 구현을 하지 않아도 람다식으로 사용가능 과거 C와 같은 함수 지향 프로그래밍, - 람다식 구현 package lec11Pjt001; public interface LambdaInterface1 { public void method(String s1, String s2, String s3); } package lec11Pjt001; public interface LambdaInterface2 { public void method(String s1); } MainClass.java (질문) 왜 인터페이스 객체에 바로 람다식을 대입하는 걸까. 그리고 이 객체.method(인..
-
클래스 05: 추상클래스컴퓨터/Java 2019. 9. 4. 15:45
출처 : 자바프로그래밍 입문(인프런) HeadFirst Design Pattern 인터페이스와 비슷한 형태로 구체화되지 않은 멤버를 이용해서 클래스를 만들 수 있어 - 추상클래스(abstract class)란 클래스의 공통된 부분을 뽑아서 별도의 클래스로 만들어 놓고 이것을 상속해서 사용한다. - 추상 클래스의 특징 1) 멤버변수, 생성자, 메서드, 추상 메서드를 가질 수 있다. 2) abstract 클래스를 상속하기 위해서는 extends를 이용한다. 3) abstract 메서드를 가지며 상속한 클래스에서 반드시 구현해야 한다. ( 인터페이스와 비슷 ) - 추상클래스 구현 package lec11Pjt001; public abstract class AbstractClassEx { int num; Str..
-
클래스 04: 인터페이스컴퓨터/Java 2019. 9. 4. 14:02
- 디자인 원칙 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. -> 꼭 인터페이스가 아니더라도, 실제 실행시에 쓰이는 객체가 코드에 의해서 고정되지 않도록 어떤 상위 형식에 맞춰서 프로그래밍함으로써 다형성을 활용해야 한다. 변수를 선언할 때는 보통 추상 클래스나 인터페이스 같은 상위형식으로 선언해야 한다. - 인터페이스란 클래스와 외형은 비슷하나 객체 생성 불가, 메서드 호출 및 기능 수행 불가 클래스에서 구현해야 하는 작업 명세서 cf) class로부터 new 키워드로 생성, 레퍼런스로 접근해서 사용했음 class에서 인터페이스를 구현- 인터페이스가 가지고 있는 기능, 상세한 내용 ex. FlyBehavior라는 인터페이스를 FlyWithWings와 FlyNoWay라는 클래스로 각각 구현할 수 있다...
-
클래스 03: 내부 클래스와 익명 클래스컴퓨터/Java 2019. 9. 4. 08:55
출처 : 자바 프로그래밍 입문 강좌(인프런) - 내부 클래스 클래스 안에 또다른 클래스를 선언하는 것 두 클래스의 멤버에 쉽게 접근할 수 있다. 코드가 장황해지기 때문에 자주 사용하지 않는다. package lec11Pjt001; public class OuterClass { int num = 10; String str1 = "java"; static String str11 = "world"; // 생성자 public OuterClass() { System.out.println("OuterClass constructor"); } // 내부클래스1 class InnerClass() { int num = 100; String str2 = str1; public InnerClass() { System.out...
-
상속컴퓨터/Java 2019. 9. 3. 23:43
출처 : 자바 프로그래밍 입문(인프런) - 필요성 기존의 검증된 class를 이용해서 빠르고 쉽게 새로운 class를 만들 수 있다. ex. extends를 이용해서 상속한다 package testPjt; public class ChildClass extends ParentClass{ public ChildClass() { System.out.println("-- ChildClass constructor --"); } public childFun() { System.out.println(" -- childFunc() --"); } } package testPjt; public class ParentClass { public ParentClass() { System.out.println("--- Paren..
-
싱글턴 패턴컴퓨터/객체지향_디자인패턴 2019. 9. 3. 23:24
- 싱글턴이란? 특정 클래스에 대해서 객체 인스턴스가 하나만, 필요할 때만! 만들어질 수 있도록 해주는 패턴 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴 Singleton.getInstance() 와 같은 형태 - 어디서든 무조건 같은 인스턴스가 리턴 제한된 용도로 특수한 상황에서 사용! - 사용예 스레드 풀, 캐시, 대화상자, 사용자 설정, 레지스트리 설정을 처리하는 객체, 로그 기록용 객체, 프린터나 그래픽 카드 같은 디바이스를 위한 디바이스 드라이버 -> 인스턴스를 두 개 이상 만들게 되면 프로그램이 이상하게 돌아간다든가 자원을 불필요하게 잡아먹는 경우, 결과에 일관성이 없어지는 경우 - 필요성 1) 전역변수의 단점 : 애플리케이션이 시작될 때 객체 생성, 그 객체가 자원을 많이 차지..
-
플라이웨이트 패턴컴퓨터/객체지향_디자인패턴 2019. 9. 3. 22:07
- 언제 사용? 어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때 어떤 클래스의 인스턴스가 아주 많이 필요하지만 모두 똑같은 방식으로 제어할 수 있는 경우 유용 특정 인스턴스만 다른 방식으로 작동하도록 하는 것은 불가능 - 인스턴스 통제, 플라이웨이트 패턴의 근간 언제 어느 인스턴스를 살아 있게 할지 통제 가능 -> 인스턴스 통제 클래스 싱글턴도 만들 수 있고, 인스턴스화 불가로 만들 수도 있다. 불변값 클래스에서 동치인 인스턴스가 단 하나뿐임을 보장할 수 있다. - 필요성 객체를 수 천 개 만드는 대신 인스턴스 한 개만 만들고 모든 가상 인스턴스들의 상태를 클라이언트 객체에서 관리 - 2차원 배열에 저장? 출처 : headfirst design pattern