본문 바로가기
728x90
반응형

back-end/JAVA43

자바 언어의 특징, 자바 플랫폼 종류/구조, JVM, 자바API, 자바 JDK(SDK)/JRE [ 자바 언어의 특징 ] 1. 단순하다. 절차지향인 C와 객체지향인 C++의 복잡한 기능을 제외하여 코드는 단순하게 작성 가능 +가비지컬렉터에 의해 자동 메모리 관리로 메모리 신경쓰지 않아도 됨 2. 객체지향적 언어라는 객체를 사용해서 프로그램을 작성하도록 하는 언어 재사용 가능 3. 분산처리 용이 분산 환경에서 TCP/IP 등의 프로토콜을 통해 효율적으로 실행할 수 있도록 설계된 언어 4. 인터프리터에 의해 실행 .java(소스코드)→.javac(컴파일)→.class(중간코드=바이트코드=클래스코드)→java(인터프리터,기계어로 해석)→실행 컴파일 언어임 동시에 인터프리터 언어이다. 5. 견고하다(Robust) 다양한 플랫폼 상에서 실행되기 위해 에러의 원인이 되는 요소들을 제거하거나 자동으로 해결 6... 2022. 1. 16.
42) 인터페이스의 장점2 42) 인터페이스의 장점 2 1. 장점 개발 시간을 단축할 수 있다 A가 B를 사용하려면 먼저 B가 완성되어야 한다. 그래서 시간이 걸린다. 하지만 인터페이스를 사용하는 경우, A는 껍데기만 있으면 된다. B가 완성이 안 돼있어도 A는 B를 사용하면 된다. I는 추상 메서드의 집합이기 때문에 A에 가져와서 나머지를 완성하면 된다. 변경에 유리한 유연한 설계가 가능하다 이전 시간에 했던 거라 '인터페이스의 장점 1을 참고하세요. 표준화가 가능하다 Java Application을 개발하는 회사는 DB에 데이터를 요청하고 data를 주고받으며 어플을 개발한다. 만약 DB회사가 여러 개 있는데 한 회사가 가격을 올린다고 한다. 그럼 기존에 쓰는 사용자는 다른 DB회사로 옮기고 싶다. 하지만 DB회사에 따라 형식.. 2021. 6. 24.
41) 인터페이스의 장점1 41) 인터페이스의 장점1 1. 장점 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다. : interface=inter(~사이에)+face(얼굴, 대상) 복잡한 기계가 있다고 하자. 사람이 기계를 보고 조작하려면 쉽지 않다. 그래서 껍데기를 씌어서 사람이 이용하기 쉽도록 하는 것이 인터페이스다. 사람이 직접 기계를 조작하는 것보다 사람이 사용하기 편한 인터페이스를 기계에 붙여놓으면 사용하기 편리하다. 기계인 하드웨어가 아무리 바껴도 인터페이스가 바뀌지 않으면 우리는 사용하는데 불편함이 없다. 하지만 계속 하드웨어가 바뀌면 우리는 바뀔 때마다 하드웨어 사용법을 익혀야 하기 때문에 불편해진다. -선언(설계)과 구현을 분리시킬 수 있게 한다. :선언(껍데기)+구현(알맹이)을 분리시키게.. 2021. 6. 24.
40) 인터페이스와 다형성 40) 인터페이스와 다형성 1. 인터페이스를 이용한 다형성 -인터페이스도 구현 클래스의 부모? yes :엄밀히 말하면 부모는 아니다. 부모가 되려면 클래스이어야 하니까. 하지만 부모나 다름없다. 1 2 3 4 class Fighter extends Unit implements Fightable{ public void move(int x, int y){ /*내용 생략*/ } public void attack(Fightable f){ /*내용 생략*/ } } Colored by Color Scripter cs Fighter클래스는 Unit을 상속받고, Fightable을 구현한다. 도식화하자면(상속은 '○'표시로, 인터페이스는 '□'표시로) 원래 같으면 다중 상속은 충돌 문제가 발생한다. Fighter클래스.. 2021. 6. 23.
39) 인터페이스의 선언, 상속, 구현 39) 인터페이스의 선언, 상속, 구현 1. 인터페이스(interface) -추상 메서드의 집합 -구현된 것이 전혀 없는 설계도. 껍데기(모든 멤버가 public) 객체 1이 객체 2의 변수에 접근하기 위해선 객체 2의 메서드를 통해 접근해야한다. 왜? 객체 2의 변수를 보호하기 위해서이다. 그게 '캡슐화'라고 이전 시간에 이야기했다. (모르시는 분 여기 참고) https://feastforall.tistory.com/50 30) 접근제어자와 캡슐화(encapsulation) 30) 접근제어자와 캡슐화(encapsulation) 1. 접근제어자와 캡슐화 접근제어자를 사용하는 이유? -외부로부터 데이터를 보호하기 위해서 public은 접근 제한이 없다 보니 int의 범위 ±20억 사이에 아무 feastfo.. 2021. 6. 17.
38) 추상클래스의 작성2 38) 추상클래스의 작성2 1. 작성방법1: 공통부분을 Unit클래스로 Tv가 3개 있다. 각 티비는 켜기, 끄기, 채널 돌리기의 세 가지 공통점(■)이 있는데, 각각 하나씩 다른 기능(●▲♥)이 있다. 추상클래스1편에서 클래스마다 공통적인 요소를 매번 작성하면 불편하기 때문에 Unit클래스에 공통적인 요소를 넣으라고 했었다. 아래 주소 참고. https://feastforall.tistory.com/68 37) 추상클래스의 작성1 37) 추상클래스의 작성 1 1. 추상클래스의 작성 -여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통부분을 뽑아서 추상클래스를 만든다. 이 소스코드 feastforall.tistory.com 공통적인 부분을 하나의 클래스□로 작성하고 그.. 2021. 6. 16.
37) 추상클래스의 작성1 37) 추상클래스의 작성 1 1. 추상클래스의 작성 -여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통부분을 뽑아서 추상클래스를 만든다. 이 소스코드를 화면에 구현해본다고 하자. 군인 클래스에는 군인의 위치, 위치 변동 기능, 멈춤 기능, 스팀팩사용기능이 있다. 탱크와 수송선도 각각의 기능이 있다. 하지만 위치, 멈춤기능, 위치 변동 기능은 모두 다 사용하고 있는 것이기 때문에 일일이 클래스마다 작성하는 것은 시간낭비+코드만 길어지는 격이 된다. 그래서 공통적인 부분을 'Unit'클래스를 만들어 한 곳에 묶어주자. 공통으로 묶어주는 클래스를 'Unit'이라 칭하고, 공통된 부분 '위치'와 '이동 기능', '멈춤 기능'을 넣는다. 위치 이동은 군인, 탱크, 수송선 모두.. 2021. 6. 15.
36) 추상클래스(abstract class), 추상메서드(abstract method) 36) 추상 클래스(abstract class) 1. 추상클래스(abstract class) -미완성 설계도(미완성 클래스) -미완성 메서드를 가지고 있는 클래스 1 2 3 4 abstract class Player{ abstract void play(int pos); abstract void stop(); } c -다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 1 Player p = new Player();//에러! 추상클래스의 인스턴스 생성불가 cs -상속을 통해 추상메서드를 완성해야 인스턴스 생성가능 1 2 3 4 5 6 7 8 9 abstract class Player{ abstract void play(int pos); abstract void stop(); } class Aud.. 2021. 6. 10.
35) 매개변수의 다형성(2)-하나의 배열로 여러 종류 객체 다루기 35) 매개변수의 다형성(2)-하나의 배열로 여러 종류 객체 다루기 이전 시간에 이어 매개변수 다형성의 장점 2인 하나의 배열로 여러 종류 객체 다루기를 보겠습니다. 1. 여러종류의 객체를 배열로 다루기 -조상 타입의 배열에 자손들의 객체를 담을 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Buyer{ int money = 10000; int bonusPoint = 0; Product[] cart = new Product[10]; int i = 0; void buy(Product p) { if(money 2021. 6. 10.
728x90
반응형