728x90

Backend/JAVA 17

JAVA(6)- 자바의 4대 특징(4)_ 캡슐화

자바에는 접근제한자라는 것이 존재하는데, 특정 부분의 접근을 제한하는 것이다. 이렇게 접근제한자를 사용하는 이유는 외부로부터 특정데이터를 보호하기 위함인데.. 이게 무슨 말이냐면..!! 위의 사진과 같이 적재적소에서 4개의 접근제한자를 이용해서 데이터를 숨기거나 노출시키겠다는 뜻 위의 표를 보면 private를 사용하면 해당클래스에서만 사용할 수 있다. 그런데 타클래스에서 private로 선언된 변수나 메서드를 가져와서 사용해야 된다면 어떻게 해야할까? 이때 나오는 개념이 getter와 setter이다. 다이어그램으로보면 위와 같다. 이제 코드로 살펴보면 Computer라는 클래스에 파워, 팬 속도, 온도 세 가지 변수를 private로 만들었다. 근데 이것을 메인클래스에서 사용하겠다는 뜻이다. 파워는 ..

Backend/JAVA 2022.10.03

JAVA(6)- 자바의 4대 특징(3)_ 추상화(추상클래스,추상메서드)

추상화라는것은, 공통되는 특성을 추출 하고 불필요한 정보를 제거해 단순화 시키는 것이다. 즉, 다시말해 추상화를 통해서 규격을 만드는 것! 1. 추상 클래스란 위에서 설명한 규격을 한데 모은곳이 추상 클래스가 되는데 추상 클래스는 자식 클래스외에는 객체화를 할 수 없다. 여기서 또 상속의 개념이 나온다..! 그래서 추상클래스의 생성자에 접근하기 위해서는 상속된 자식 클래스에서 호출해야 한다. 다이어그램으로 위의 그림처럼 나타낼 수 있다중요한 것은 'abstract' 라는 추상의 표기 를 해줘야 한다. 클래스를 만들때, abstract에 체크를 해주면 된다. 이번에도 상속을 통해서 이루어지는 관계이기 때문에 부모클래스인 Mammal 클래스먼저 생성해줘야한다. 그리고 Mammal을 상속받는 Person 클래..

Backend/JAVA 2022.10.03

JAVA(6)-자바의 4대 특징(2)_다형성

다형성은 상속을 받는다는 전제하에 발생하는 개념이다. 같은 부모를 가진 자식들은 첫째든, 둘째든, 셋째든 각자의 집을 갖고 있으면서도 부모의 집으로 들어갈 수 있다는 뜻이다. 그렇다면 다형성을 사용하면 어떤 점이 좋을까? 하나의 부모 타입을 활용해 왔다갔다 할 수 있다. 그래서 프로그램적으로보면 메모리 낭비를 줄일 수 있다. 코드로 보면 아래와 같다. Mammal 클래스로부터 상속받은 Cat 과 Dog 클래스가 있다. 이 두 클래스는 birth를 오버라이드 했다. 다형성을 활용해서 Mal 클래스를 객체화 시키고 mal이라는 참조변수를 이용해 상속받은 Dog클래스를 객체화 할 수 있다. 그렇게 하므로써 부모의 메서드와 오버라이드한 birth 와 eat 메서드를 사용할 수 있다. 형변환은 두가지 유형으로 나..

Backend/JAVA 2022.10.03

JAVA(6)- 자바의 4대 특징(1)_상속, 오버라이드

상속의 개념은 나에게 없는 것을 부모에게 물려 받아 원래 내 것 처럼 사용 하는 것을 의미 한다. 그렇다면 상속을 왜 할까? 첫번째 이유는 code의 중복을 피하기 위해서! 특히나 남의 코드를 가져와서 부품처럼 쓰는 자바에게는 매우 중요한 특징중 하나! 상속을 할때에는 extends라는 키워드를 사용하는데 확장이라는 뜻이다. 다시말해, 상속을 통해 기능, 분류의 확장을 하겠다는것! 예를 통해보면 아래의 그림과 같다. '포유류'는 체온이 일정한 '항온동물'이면서 척추가 있는 '척추동물'이고 결국엔 '동물'에 소속된다. 상속의 특징을 보면 첫번째는 하나의 클래스만 상속이 가능하다는 것인데 이말을 위의 그림을 통해보면 사람은 포유류에 상속되면서 동등한 위치의 분류에 있는 조류에는 상속 될 수 없다는 뜻이다. ..

Backend/JAVA 2022.10.02

JAVA(0) - Runnable Jar File 실행하는 법

이번에는 자바에서 만든 프로젝트를 CMD에서 실행 할 수 있는 방법에 대해 소개하고자 한다.!! 이렇게 하는 이유는 파일이 많고 구조가 복잡하거나, 구조 공개가 꺼려질 경우는 jar 로 만들 수 있다. 실제로 강사님이 자주 사용하는 방법이라고 하셨으니 알아두면 좋은듯.! 먼저, 환경변수 설정을 바꿔야하기때문에 Build path로 들어간다. 그리고 JRE버젼을 더블클릭해서 만약 11로 맞춰져 있지 않다면 11로 바꿔준다 환경변수를 설정했으면 이제 내보내고자하는 프로젝트를 우클릭-> export-> JAVA-> Runnable jar file을 선택한다. 만약에 Export destination에서 저장 위치를 C드라이브로 지정하고자 한다면 , 이클립스 실행시 아이콘 우클릭하여 관리자권한으로 실행 해서 열..

Backend/JAVA 2022.10.01

JAVA(9)-네트워크(2)(Echo server/client 만들기 과정)

1. echo 서버란? Client 와 Server 가 접속 했다면 Stream 을 통해 data 를 전송 할 수 있다. 받은 내용을 그대로 응답하는-> 메아리 개념 강사님께서 채팅과정이 이해가 안가면 echo까지만 하라고 하셔서 사실 이 과정도 잘 이해가 안가지만 나름대로 주석을 분석해서 내 언어로 바꿔보았다. 2. 진행과정 1) 우선 server가 먼저 실해중이어야 응답을 client로부터 응답을 받을 수 있으므로 server class를 먼저 만들어준다. 2) Server Socket 생성 3) Client 가 들어오고 싶어하는 IP 개방 4) Client 의 요청 대기 5) Input Stream 으로 데이터 수신 6) Output Stream 으로 데이터 발신 7) Socket 자원 반납 8) ..

Backend/JAVA 2022.09.25

JAVA(9)- 네트워크(1)(클라이언트/서버/소켓/TCP)

1. 네트워크란? 네트워크는 서로 다른 computer끼리 서로 연결되어 있는 망 네트워크가 이루어지기 위해 가장 먼저 필요한 것은 주소값 그리고 이 주소를 알기 쉽게 하기 위해 domain을 사용한다 목적지로 잡은 컴퓨터를 서버라고 부르고 그 목적지로 향해가는 컴퓨터를 클라이언트라고 부른다 내가 만약 유투브에 들어가 영상을 볼때 나(내가 사용하는 컴퓨터)가 클라이언트고 유투브 홈페이지가 컴퓨터 서버가 된다. 그래서 내가(Client) 유투브(server)에게 요청(request)를 하고 서버는 나에게 응답(respond)를 해준다. 2. IP 주소 얻기 네트워크의 가장 기본인 주소를 얻어야한다. 컴퓨터에서 주소 = IP 컴퓨터의 ip를 얻는 방법은 두가지인데 첫번째는 cmd창에서 ipconfig를 하는..

Backend/JAVA 2022.09.25

JAVA(8)- stream(NIO)

1. NIO와 IO의 차이점 - 우선 NIO는 NEW Input/output의 약자이다. - NIO는 기존 IO에 Asynchronous(비동기)와 channel 개념 추가 2. File system 다루기 - JAVA NIO에서는 파일 경로 정보 각종처리 기능을 각각 다른 클래스로 전문화 public class FilesExam { public static void main(String[] args) throws IOException { //File 에 대한 전문 클래스 -> file에 대한 모든 정보를 갖고 있음 //Files를 쓰기위해서는 반드시 path를 이용해서 경로를 지정해줘야한다. Path path=Paths.get("C:/img/high2.gif"); System.out.println("디..

Backend/JAVA 2022.09.23

자바(8)- Stream(Input/Output)

1. stream이란? - system 안으로 또는 밖으로 이동하는 Data의 흐름을 Stream 이라고 한다. 2. Inputstream / Outputstream inputstream/outputstream은 byte 기반 최상위 클래스 - 하위 클래스들은 특화된 분야가 있다. -> 그래서 InputStream/outputStream을 직접 사용하는 경우는 드뭄 * system.in : 키보드로부터 데이터를 입력받을 수 있음 - read() 메서드 사용시 키보드로 입력한 데이터를 알 수 있음 * system.out : 콘솔로 데이터를 출력하는데 사용 - 1개의 바이트 출력을 위해서 outputstream의 write메서드를 사용 * flush로 털고 close로 닫아준다. 1. 손님을 맞이한다-> i..

Backend/JAVA 2022.09.21

자바(7)- Thread(1)(멀티 스레드/동기화/컨트롤)

1. multiThread란? program을 작업장이라고 한다면 Thread는 그 안에서 일하는 일꾼이다. 2. process와 thread 비교 program의 복잡도에 따라 thread는 하나만 있을수도 있고 여러개 있을수도 있다. 즉, 복잡한 process에는 한개이상의 thread를 가지고 있다. 가장 큰 차이점은 memory 공유의 여부-> thread는 같은 메모리를 사용할 수 있음 그래서 문제가 생긴다.(예를 들면 같은 이클립스에 동시에 작업할때 충돌이 생길 수 있다) 3. thread 생성법 - Runnable interface 구현과 Thread class 상속 방법 - 익명객체 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Thread work= new Thre..

Backend/JAVA 2022.09.19
728x90