전체 글 119

2022.03.21 다양한 예외 처리

오늘 코드를 설명하기 앞서 우선 기본적인 내용을 먼저 알고 가야 할 것 같습니다 우선 가장 중요한 요점은 IO처리 시 에는 절대로!!!! throws 를 사용하지 않습니다!!! 또한 close( ) 가)가 없으면 서버가 죽어버리는 경우가 생기니 반듯이 close( )가 필요합니다 사용 가능한 예외 처리의 종류는 try~catch finally , try with resource , @Cleanup 가 있다 위 내용들을 숙지하고 코드로 다양한 예외 처리에 대해서 알아보겠습니다 !! Client public class FileClient { //bad code public static void main(String[] args) throws Exception { //소켓 연결 Socket socket = n..

2022.03.21 예외 처리

첫 강의는 예외 처리에 대한 강의였습니다 예외처리란 무엇인가 그리고 어떠할 때 사용해야 하는가에 대해 이야기해보겠습니다 우선 예외 처리가 왜 등장했느냐 바로 객체 지향의 특성 때문입니다 객체지향 그리고 예외처리 이 그림은 보면 A 라는 객체는 B , C , D 랑 연결이 되어있습니다 객체지향은 다양한 연결점이 있기에 다양한 오류 상황이 생깁니다 이런 상황에서 처리를 Return 이 아닌 새로운 방향을 찾은 것이 바로 예외처리입니다 그렇다면 왜 Return 이 아니라 예외처리를 이용할까요? 그것은 Return 은 제한성이 강합니다 그렇게에 사용할때 또한 제한적이죠 그렇지만 예외처리는 그런 면에서 굉장히 자유도가 높습니다 그렇게에 사용되는 것이죠 예외 예외에도 종류가 있습니다 바로 예외 처리하기 와 예외 던..

2022.03.18 입출력 속도

코드 리뷰에 앞서 이 코드는 수업을 위해 bad code로 작성되었습니다 코드 //bad code public static void main(String[] args) throws Exception{ //저장된 사진 불러오기 InputStream inputStream = new FileInputStream("C:\\zzz\\aaa.jpg"); System.out.println(inputStream); //복사본 만들기 OutputStream outputStream = new FileOutputStream("C:\\zzz\\copy.jpg"); //읽고 쓰는 시간 측정하기 위한 //시작점 long start = System.currentTimeMillis(); // 1970-01-01 이 기준점 //배열로..

2022.03.17 수업 정리< 입출력 용어 정리 >

17일부터는 입출력 부분의 수업이 진행되었습니다 소켓 통신을 이용해서 옆 사람과 메시지를 주고받는 형태의 수업을 진행했습니다 하지만 부득이하게 bad code 사용했기에 이번에는 코드 리뷰보다는 입출력 수업 중 언급하셨던 용어나 중요한 개념들을 정리해 보려고 합니다 네트워킹(Networking) : 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구상하는 것 IP 주소 : 컴퓨터(host)를 구별하는데 사용되는 고유한 값 모든 컴퓨터는 IP 주소를 갖는다 서버 (Server) : 서비스를 제공하는 곳 클라이언트 (Client) : 서비스를 사용하는 곳 소켓(Socket) 떨어져 있는 두 호스트(서버 , 클라이언트)를 연결해주는 도구로써 인터페이스 역할을 한다 데이터를 주고 받을 수 있는 구조체로 소켓..

인터페이스 vs 추상 클래스

⭐둘 다 모두 추상 메소드라는 것을 가집니다 ⭐둘 다 객체 생성은 불가능하고, 타입으로만 사용됩니다 ⭐인터페이스는 스펙이나 원하는 기능을 정의하고자 쓰지만, 추상 클래스는 '상속 + 약간의 강제 성이 목적'입니다 ⭐인터페이스는 상수, 추상 메소드만 존재하지만, 추상 클래스는 상속이 원래 목적이므로 실제 변수나 메소드를 그대로 가지고 있습니다. ⭐인터페이스는 부채만 남겨주지만, 추상 클래스는 재산도 남겨 줍니다 인터페이스는 추상 메소드만 존재하기 때문에 부채 만 잔뜩 던져주게 되지만 추상 클래스는 상속의 원래 기능을 그대로 사용할 수 있습니다. ⭐인터페이스는 다중 상속도 가능하지만, 추상 클래스는 단일 상속만 됩니

JAVA 2022.03.19

상속, 다운 캐스팅, instanceof

⭐컴파일 허가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(Down Casting)이라고 합니다 글만으로는 이해하기 어려워 가벼운 예제를 통해 알아보겠습니다 public class ZR { public void make(){ System.out.println("야야야"); } } public class RR extends ZR{ public void rrzd(){ System.out.println("호호 "); } } 2개의 클래스를 만들어주었습니다 RR 클래스는 현재 ZR클래스를 상속하고있습니다 여기서 RR클래스의 rrzd 를 부르면 어떻게 될까요?? 이렇게 컴파일 에러가 발생합니다 왜 이럴까요?? 그냥 생각해보면 당연하게 불러올 수 있을 줄 알았던 코드인데 이런 경우에 컴..

JAVA 2022.03.19

추상 클래스(Abstract Class)

추상 클래스의 중요한 개념 추상 클래스(Abstract Class): 객체가 아니라 타입으로만 존재하고 추상 메서드를 가 지는 존재 추상 클래스라는 것은 간단히 말해서 객체 생성은 안 되고 부모 클래스로만 존재하는 클래스를 의미합니다. 즉 변수의 타입이 될 수는 있지만, 객체 생성을 못합니다!! 추상 클래스라는 것은 클래스의 용도가 객체 생성 용도로 사용하지 않는 경우에 사용합니다. 클래스를 객 체 생성의 용도가 아니라면 변수의 타입으로 선언하는 용도와 상속의 본연의 기능으로 특정한 코드를 하 위 클래스로 물려주는 기능을 활용할 때 사용합니다. 추상 클래스는 추상 메소드라는 것을 가질 수 있습니다. 추상 메서드라는 것은 하위에서 '반드시 오버 라이 더하라'는 강제성을 가지는 메서드입니다. 추상 메소드가 ..

JAVA 2022.03.19

2022.03.16 Interpace 활용 <3단 구현> 코드로 보기

Interface Auth public interface Auth { //권한 void execute(); } UI AbstractUI // abstract = 추상클래스 // implement는 interface 상속 //추상클래스를 interface로 한번더 빼준다 (interface가 더 유연하니까) public abstract class AbstractUI implements Auth { private Scanner scanner; public void print(String msg){ System.out.println(msg); } public int inputInt(String msg){ System.out.println(msg); return Integer.parseInt(scanner.ne..

2022.03.16 Interpace 활용 <3단 구현>

마지막 시간에 정말 중요한 내용 값비싼 내용들을 설명해 주셨습니다 우선 시작은 상속보다는 조합을 사용해라!!!로 시작했습니다 그래서 상속의 문제점에 관련해서 왜 Interpace 를 사용해야 하는가 그리고 Interpace는 어떻게 활용하는가에 대해서 지금부터 시작해 보겠습니다 우선 Interpace 의 사용 중에 마킹용 Interpace 라는것이 있습니다 마킹용 Interpace 마킹용 interface는 전혀 의미가 없는 interface를 의미하는데 그 활용은 다른 종류의 전혀 다른 객체를 하나의 타입으로 묶기 위한 존재 로 활용됩니다!!! 그리고 Interpace 또 다른 활용 조합이라는 것이 있습니다 바로 처음에 말했던 상속보다는 조합을 사용해라 는 이곳에서 나온 이야기입니다 상속의 단점 이런 ..