목록중앙 HTA (2106기) story (180)
날아라쩡글이의 블로그입니다.
I/O는 java.io package에 포함되어 있는 클래스 이다. App에서 리소스를 읽어오거나 App에서 데이터를 목적지로 출력하는 작업을 수행하는 클래스이다. 내 App이 기준점으로 자원을 읽어오면 Input File을 출력하면 OutPut 으로 방향에 따라서 읽어오는 Stream와 내보내는 Stream이 존재한다. 클래스의 종류의 경우 한번에 읽고 쓰는 데이터에 따라서 구별이 가능하다. ByteStream(바이트스트림) 한번에 한 1bite씩 읽고, 쓸 수 있는 스트림 바이너리데이타를 다룸 010101형태로 읽는 스트림 InputStream, OutputStream FileInputStream, FileOutputStream BufferedInputStream, BufferedOutputStrea..
요구사항 분석 요구사항 리스트 작성 개발해야하는 각 기능 기존 시스템 분석 및 벤치마킹 스토리 보드 작성 기획이라는 단계에서 문서가 나온다. 분석, 설계 개발 세부 단계 구현대상이 되는 정보를 저장하는 VO객체 정의하기 개발할 각기능에 대한 구체적인 시나리오 작성 -> 개별기능의 구체적인 시나리오 사용자와 상호작용을 담당하는 곳에서 입력할 데이터, 출력할 내용을 선정 -> 업무 로직 후 출력할 데이터 기능구현에 참여하는 클래스를 정의하고, 메소드를 정의한다. (메소드의 반환타입, 메소드 명, 매개변수를 정의한다. ) -->Service와 App클래스 업무로직 구현 테스트 테스트 시스템이행 UserApp의 경우 기능이 있고, 메뉴구현하기 ()에 Scanner와 UserService의 객체를 만들어 속성을 ..
필요에 따라서 try~catch문의 예외처리를 할 수 있다. 강제 예외 발생시키기 새로운 예외를 발생시키는 것 예외 변환하기 발생한 예외를 try ~ catch하고 다른 예외를 발생시키는 것. User의 class를 정의 한다. UserManager class을 작성한다. private로 List userList = new ArrayList(); 입력받을 User ArrayList를 작성하고, public method를 입력한다. 반환타입은 없는 void로 입력했다. for문으로 User userList에 입력된 값을 출력하고, if문으로 getId()가 동일한 경우 throw new RuntimeException(아이디 중복 (원인작성)); if문으로 getName()이 동일한 경우를 입력한다. thr..
예외처리 예외처리란 프로그램 실행 시 발생할 수 있는 오류에 대비하는 것으로 프로그램의 비정상적인 종료를 막고, 실행상태를 유지하는 것 에러의 종류 에러 (Error) 시스템, JVM의 잘못으로 발생되는 문제 개발자가 해결할 수 있는 문제가 아님 예외처리의 대상이 아님 시스템 관리자나 서버관리자가 확인 후 문제를 고칠 수 있다. 왠만해서는 발생되지 않으며, 치명적인 것이다. 예외 (Exception) 개발자의 코딩실수로 인해서 일어난다. 사용자가 잘 못 사용할 수 있다는 의미로 잘 못 사용하게 되면 원래의 프로그램이 꺼져버리기 때문에 예외처리 메세지를 보낸다. 사용자입장에서는 황당할 수 있기 때문에 꺼지지 않게, 어디에서 문제였는지를 알려준다. 중단되지 않게 하기 위해 에러 메세지를 출력한다. 예외 에러..
숫자, 날짜, 문자를 일정한 포맷(형식, 패턴)의 텍스트로 바꾸는 것 100000000 ->"100,000,000"으로 변환하고 싶음. 날짜를 "2021-10-08","2021년 10월 08일"로 변환하고 싶을 때 사용하는 API이다. Java API -> java.text ->DateFormat, SimpleDateFormat, MessageFormat, DecimalFormat이 존재한다. DateFormat 시스템의 현재 날짜와 시간정보를 포함하고 있는 Date객체를 생성한다. Date date = new Date(); y M d E a H h m s S 년 월 일 요일 오전/ 오후 시 (0~23) 시 (1~12) 분 (0~59) 초 (0~59) 밀리초 (0~999) Date객체를 toString(..
자연수의 범위에서 난수를 발생시키고 싶을 때에는 math.random보다는 Random객체가 더 편하다. for(int i =1; i
Java.util.Arrays static메소드만 있다. 배열과 관련된 기능을 제공하는 유틸리티 클래스 복사, 비교, 검색, 정렬 등의 기능을 제공한다. Java.util.Collections 자료구조와 관련된 기능을 제공하는 유틸리티 클래스 복사, 비교, 검색, 정렬등의 기능을 제공한다. Java.util.Objects 객체와 관련된 기능을 제공하는 유틸리티 클래스 S로 끝나는 클래스는 유틸리티 클래스라고 불리운다. method Arrays.asList(E....e) 지정된 객체들이 저장된 List 자료구조 객체를 반환한다. java.util.Array$ArraysList가 만들어져서 반환된다. Collections.sort(Listlist) List객체에 저장된 요소들을 오름차순으로 정렬한다. Col..
Map List> Map> Set의 순으로 사용이 많이 된다. Map으로 데이터를 Key와 Value의 쌍으로 연결지어서 저장하는 객체이다. Key와 Value의 쌍을 표현하는 객체는 Entry이다. Map.Entry의 집합체를 Map라고 부른다. Key는 값을 대표하는 값이다. Key는 중복될 수 없다. Key는 UNIQUE한 값이다. Key의 타입은 보통 String, Integer, Long의 타입이 주로 사용된다. Value는 실제로 Map에 저장할 정보를 가지고 있는 객체다. 보통 ValueObject가 Value의 타입으로 주로 사용된다. 다양한 객체를 다룬다. 중요한 내용이 들어간다. Key Value Map 학번 학생 객체 Map 주문번호 주문정보 객체 Map 사용자 아이디 사용자 정보 객..
java.Lang.package안에는 Object,List,Set,Map,ArrayList,HashSet,HashMap,LinkedList,TreeSet,HashTable,Stack,Vector Date,Arrays,Collection,Objects,Random,Calendar 이 존재한다. 첫번째의 경우는 자료구에 해당되며 오늘 작성할 친구들이다. Collection Framwork란 Framwork란 개발방법을 구체화 시켜놓은것 자바의 자료구조를 구현해 놓은 것, 자료구조를 구현해 놓은 것 자료구조란 객체의 저장/삭제/조회 등의 기능을 제공한것 다른 객체를 다룰때, 꺼내고, 삭제하고, 확인할 때 사용하는 방법이다. 자바의 모든 자료구조의 구현 클래스는 Collection인터페이스를 구현한 클래스이다...
web에서 활용도가 많은 class이다. java.base에 존재한다. 자바 5부터 추가되었다. , 한글자가 아닌 여러글자도 존재한다. 소스레벨에서 데이터 타입이 결정되지 않고, 별칭(타입파라미터) 만 지정한다. 데이터타입은 필드의 타입, 매개변수 타입, 리턴타입등이다. 객체 생성시점, 구현클래스 구현시점, 메소드 실행시점에 별칭을 대신할 데이터 타입을 외부에서 지정하는 것이다. 클래스나 인터페이스 옆에 header처럼 적어 놓았다. 제네릭은 다이아몬드표기법으로 타입파라미터(별칭)을 지정한다. 객체생성시점, 구현클래스구현시점, 메소드실행시점에 데이터타입을 지정한다. 데이터타입은 클래스 혹은 인터페이스타입만 가능하다. 기본자료형은 제네릭의 데이터타입으로 지정할 수 없다. 제네릭이 나오게 된 이유 Box라는..
System class 자바실행환경이 설치된 시스템(컴퓨터)에 대한 유용한 값과 객체를 제공하는 클래스이다. java.lang패키지에 속해있다. System 클래스의 모든 필드와 모든 메소드는 정적필드, 정적 메소드이다. 제공하는 것은 err : error를 출력한다.(모니터, 콘솔) PrintStream print, println, printf in : 표준입력을 출력한다.(키보드) InputStream read method out : 표준출력을 출력한다. (콘솔, 모니터) PrintStream System.out.println(System.err);//java.io.PrintStream@7d6f77cc System.out.println(System.in);//java.io.BufferedInputSt..
StringBuilder StringBuffer 둘의 사용방법은 동일하다. String이란 문자열 자체를 표현하는 객체이다. 문자열의 표현이라고도 불린다. String의 경우 불변성으로 인하여 +연산자를 이용하여 값을 연결시키면 연산시킬 때마다 새로운 String 객체가 생성된다. "홍길동" + 100 + 70 + 60; "홍길동" 새 String 객체가 생성된다. "홍길동100" 새 String객체가 생성된다. "홍길동10070" 새 String객체가 생성된다. "홍길동1007060" 새String객체가 생성된다. 최종 문자열 "홍길동1007060"이 만들기 위해서 String의 객체3개가 추가로 생성되었다. 따라서 , +연산자를 사용하는 것은 불필욜한 String객체를 생성하게 되고, 메모리 낭비의 ..
문자열을 표현하는 객체다. 문자열은 불변객체다. 한번 생성된 문자열은 절대로 변하지 않는다. String은 생성된 방법에 의해서 Class에서 상속이 되는지 new연산자로 객체가 생성이 되는지 다르다. String이 불변객체라는 의미는 한번 만들고는 변하지 않는 값이라는 의미이다. 즉, 상수라는 것이다. String은 ="";으로 생성할 수 있다. 그렇게 생성하면 이것은 new라는 연산자로 객체가 생성된 것이 아닌 class 변수로 상수들이 모여있는 상수풀이라는 저장공간에 Student라는 객체가 생긴다. 그리고 equals가 객체의 내부의 단어를 비교한 동등성의 법칙처럼 같은 단어가 존재하면 Student객체를 따로 생성하지 않고 참조변수를 ConstantPool 주소값에 연결한다. class는 변수,..
API(Application Programming Interface) 어플리케이션을 개발할 때 사용할 수 있도록 지원하는 라이브러리 응용프로그램의 Application을 개발할 때 많이 사용함 어떤 클래스와 인터페이스가 모여있는 집합(라이브러리) Java API(Java Application Programming Interface) 자바를 이용해서 어플리케이션을 구현할 수 있도록 지원하는 라이브러리들의 집합 자바에서는 개발자들의 구현부담을 최소화하기 위해서 시스템, 입출력, 화면처리, 네트워크, 스레드등을 구현할 때 필요한 클래스 / 인터페이스(표준안)나 클래스들을 미리 구현해서 제공하고 있는데 이것을 JavaAPI라고 한다. ->즉, 미리 구현 해둔 것 다른 언어들로 이뤄진 API가 있다. String..
추상화 구현부가 없는 것, 구체적인 구현내용을 포함하고 있지 않은 것 구체적인 구현을 각각의 구현클래스(자식클래스)에게 위임하는 것 추상화의 방식 인터페이스 각각의 구현클래스가 반드시 구현할 기능을 정의한다. 인터페이스는 구현클래스들의 표준이 된다. 구현클래스들은 인터페이스에서 정한 표준(접근제한자, 반환타입, 메소드 이름, 매개변수)이 정해진대로 구현한다. 같은 인터페이스를 구현한 모든 구현클래스는 사용방법이 완벽하게 동일하다. 인터페이스는 클래스간의 결합을 느슨하게 유지시킨다. 인터페이스는 동시작업을 가능하게 한다. 인터페이스를 구현하는 클래스의 개발, 인터페이스를 구현한 클래스를 이용하는 클래스의 개발이 동시에 이뤄진다. 인터페이스를 사용하는 이유??? 모든 클래스들이 동일한 개발이 이뤄지게 하고,..
Car라는 인터페이스에는 에는 여러가지 기능이 존재한다. 이러한 Car객체는 이런기능을 가지고 있다. 이러한 기능들로 인터페이스를 구현하게되면 표준안으로 인해서 구현하지 않을 기능까지 전부다 갖게 된다. 단점으로는 구현하지도 않을 메소드를 재정의하게 되고 실제로 이차가 어디까지 구현을 하게 되는지 가독성이 떨어지게 된다. 그렇기 때문에 인터페이스의 기능을 나눠서 구현받게 만들 예정이다. 이것이 인터페이스의 분리의 법칙이다 SOLID의 법칙중의 하나로 하나의 인터페이스를 4가지로 분리하여 하나이상의 인터페이스를 상속박아서 또 다른 표준을 만들었다. 원래대로라면 전체의 기능을 구현했어야했다. 그러나 인터페이스의 기능을 세부적으로 나눠서 다중상속을 진행하여 구현을 받도록 진행하였다. 좀더 쉽게 구현이 가능하게..
인터페이스와 클래스의 관계 클래스는 단일상속이 가능하다. 인터페이스는 다중상속이 가능하다. 클래스와 클래스의 관계는 상속관계이다. 인터페이스와 클래스의 관계는 구현관계이다. 인터페이스와 인터페이스의 관계는 상속관계이다. 클래스와 인터페이스는 구현관계이다. 클래스는 2개이상의 인터페이스를 구현할 수 있다. 클래는 인터페이스를 구현하고, 클래스를 상속받을 수 있다. 인터페이스는 다중상속이 가능하다. 같은 것끼리는 상속관계이고, 나머지는 구현관계이다. 클래스가 인터페이스의 부모가 될 수 없다. 추상클래스 클래스는 총 3가지의 클래스가 있다. 클래스 구현클래스 구현부가 있는 메소드이다. 멤버변수, 정적변수, 생성자, 멤버메소드, 정적메소드가 있다. 인터페이스를 구현한 클래스이다. 추상클래스가 없다. public..
개발할 때 객체지향원칙의 SOLID는 중요한 원칙이다. 개발을 쉽고, 응집도가 높게 결합도가 낮게 이뤄지게 만들어주는 원칙이다. 위의 그림처럼 A와 B의 경우 같은 부모를 가지고 상속을 받지 않기 때문에 A와 B를 서로 전해줄 수 없다. 특징 DatabaseChild와 cloudDatabaseChild의 경우 모두 Parent 타입이다. DatabaseChild객체와 CloudDatabaseChild는 모두 Parent타입의 참조변수로 참조할 수 있다. Parent parent = new DatabaseChild(); Parent parent = new CloudDatabaseChild(); Parent로부터 상속받은 메소드를 전부 재정의 했기 때문에 사용법이 동일하다. DatabaseChild와 Clo..
상속의 경우 물려받은 것 이상으로의 효과가 있다. 언제 사용을 할까? 상속의 첫번째 목적 코드의 중복을 제거하였다. 하위클래스를 빠르게 개발할 수 있다. 클래스의 재사용성이 높아 졌다. 생산성 및 유지보수성이 높아졌다. 상속의 두번째 목적 하위클래스에 비슷한 기능이 많을 때 상속과 메소드의 재정의는 하위클래스가 비슷한 기능을 가지고 있을 때 상위클래스로부터 재상속 받은 기능을 여러 하위클래스에서 재정의 했을 때 해당기능을 클래스에 상관없이 같은 방법으로 사용할 수 있게 되었을 때 (같은 이름을 사용하니까 ) 클래스 형변환을 적용하면 다향성을 발현 시킬 수 있을 때 클래스란 -정보를 저장하고, 정보를 전달하는 객체를 생성하기 위한 클래스가 존재한다. Person, Student, Proffessor, Em..
클래스 형변환 활용하기 1. 부모타입의 참조변수로 모든 자식객체를 참조할 수 있다. (강제형변환사용시!) 상속관계에 있는 (상위 객체 -하위객체 )관계에 있는 객체사이에서만 클래스 형변환이 가능하다. 하위 객체를 상위 클래스 타입의 참조변수로 참조하는 것이 클래스 형변환이다. 클래스 형변환 없이 객체를 참조하는 경우는 상위객체의 공개된 모든 속성 및 기능을 사용할 수 있고, 자기 자신의 공개된 모든 속성 및 기능을 사용할 수 있다. Object 타입의 참조변수는 자바의 모든객체 (배열을 포함한 )를 참조할 수 있다. 상위클래스 타입의 객체를 하위클래스 타입의 참조변수로 참조하는 것은 절대 불가능하다. 생성된 객체와 참조변수의 타입이 상속관계가 아닌 경우도 클래스 형변환이 절대 불가능하다. 클래스 형변환은..