일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Oracle 오류
- 카카오맵
- python 기초
- The Network Adapter could not establish the connection
- Java
- 매일 타자연습
- 데이터베이스 접속
- 카카오 오븐
- MySQL
- Usecase Diagram
- typing test
- Jupyter Notebook
- Kakao 지도 API
- SEQUENCE
- oracle 11g
- oracle
- SQL
- Python
- tuple
- 카카오맵 API
- Set
- 자바
- Oracle 18c
- SQL Developer
- database
- 10fastfingers.com
- ORA-1017
- CSV
- 유스케이스 다이어그램
- Kakao Oven
- Today
- Total
Another Brain
11일차_ Generic, set , map, API 활용 본문
## Class Node Type (클래스 종류)
-- Concrete Class
>> 개발자가 자유롭게 필요시에 직접 객체 생성가능한 클래스
>> 다형성을 반영한 부모타입의 변수 사용 가능
>> 구성요소 : 멤버변수, 생성자, 메서드
>> 부모 선언형식 : public class 부모클래스명 {}
>> 현실세계어떤부모님?? : 재산만 상속해주시는 매우 감사한 부모님
>> 자식클래스(상속) : 선택
>> 자식클래스 선언형식 :
public class 자식클래스명 extends 부모클래스명 {}
-- Abstract Class
>> 미완성 클래스(추상클래스), 미완성 메서드(추상메서드)
>> 직접 객체 생성불가 클래스
>> 다형성을 반영한 부모타입의 변수 사용 가능
>> 추상메서드 존재시에는 반드시 추상클래스
>> 추상메서드 없어도 상속을 강제하기위해서 추상클래스
>> 구성요소 : 멤버변수, 생성자, 메서드 + [추상메서드]
>> 부모 선언형식 : public abstract class 부모추상클래스명 {
public abstract 반환타입 추상메서드명(args);
}
>> 현실세계어떤부모님?? : 재산 + 채무도 함께 상속해주시는 감사한 부모님
>> 자식클래스(상속) : 필수
>> 자식클래스 선언형식 :
public class 자식클래스명 extends 부모추상클래스명 {}
-- Interface
>> 다중 구현 (표준화)
>> 다형성을 반영한 부모타입의 변수 사용 가능
>> 구성요소 : 추상메서드, 상수로만 구성된 클래스 형태
>> 부모 선언형식 : public interface 부모인터페이스명 {
public 타입 상수명 = 상수값;
public 반환타입 추상메서드명(args);
}
>> 인터페이스에 선언되어 있는 메서드는 자동으로 public abstract 표기함(추상메서드)
>> 인퍼페이스에 선언되어 있는 멤버변수는 자동으로 public static final 표기함(상수)
>> 현실세계어떤부모님?? : 채무만 상속해주시는 그럼에도 불구하고 감사한 다중의 부모님
>> 자식클래스(상속) : 필수
>> 자식인터페이스(상속)
public interface 자식인터페이스명 extends 부모인터페이스명 {}
>> 자식클래스(구현)
public class 자식클래스명 implements 부모인터페이스명1, 부모인터페이스명x {}
## 상속
-- Generalization(일반화)
>> 공통 속성, 기능 일반화(표준화)
-- 단일상속
-- 계층구조(tree 구조)
## Generic
-- jdk1.5 추가
-- API 문서 : java.lang.Object
<E> : 특정 Element Object 지정
<K> : Key 해당하는 Object 지정
<V> : Value 해당하는 Object 지정
<T> : Type 해당하는 Object 지정
## usage modifier
-- static 멤버 : 클래스이름.static멤버변수명, 클래스이름.static멤버메서드명()
-- abstract
-- final
## class node type : concrete class, abstract class, interface
## constructor : 접근가능, 중복정의
## API Documentation 만들기
-- 회원관리 소스코드를 api문서 주석과 코드를 깔끔하게 정리진행해주세요
-- jdk\bin>
Usage: javadoc [options] [packagenames] [sourcefiles] [@files]
-- eclipse> 컴파일 완성 >> 테스트 완료 >> API 문서 작성(개발 종료시에 문서작업 진행)
>> 프로젝트선택 >> export >> Java >> javadoc
>> 한글인코딩설정 : javadoc options => -encoding utf-8
-- api 문서주석 폴더 :
>> project\docs\api\public> 공개용 api 문서
>> project\docs\api\private> 내부용 api 문서
## 주요 API 활용
-- java.lang.Object
>> equals(Object) : boolean / hashCode() : int
>> toString() : String
-- 문자열
>> 문자열 비교시에는 equals() 메서드 사용해야함
>> java.lang.String :
=> 불변 문자열
=> String name1 = "홍길동";
=> String name2 = new String("홍길동");
>> java.lang.StringBuffer : jdk1.0
>> java.lang.StringBuilder : jdk1.5
=> 가변 문자열
StringBuilder name2 = new StringBuilder("홍길동");
-- 문자열 토큰링
>> 구분자를 통해서 글자를 분리(자르기)
>> csv : 컴마 구분자를 문자 분리 활용
>> java.lang.String#split():String[]
>> java.util.StringTokenizer(String, "+-*/% ,")
-- Wrapper
>> 기본형 <-> 객체형 변환
>> byte -> Byte
>> short -> Short
>> int -> Integer
>> long -> Long
>> float -> Float
>> double -> Double
>> boolean -> Boolean
>> char -> Character
>> "1234" => 1234
>> Integer.parseInt("123");
>> Integer intObj = new Integer("123");
>> Integer intObj = new Integer(123);
>> int data = intObj.intValue();
-- 날짜, 형식
>> 가입일 : 가입당시 현재날짜(기본형식 : 년도4자리-월2자리-일2자리)
>> java.util.Date : 현재날짜, 현재시간
>> Calendar, GregorianCalendar
>> java.text.DateFormat >> java.text.SimpleDateFormat
>> java.util.Locale
>> 날짜형식 => 문자열 변환 (com.work.util.Utility 유틸리티 클래스 분리설계)
>> 시간형식 => 문자열 변환
>> 년도 : yyyy
>> 월 : MM
>> 일 : dd
>> 시간 : hh / HH / KK
>> 분 : mm
>> 초 : ss
>> 오전/오후 : a
-- 숫자, 형식
>> 마일리지 : 123456789 => 123,456,789
>> 화폐 : 통화기호123,456,789
## Array (배열)
-- 자료 저장구조
-- 다차원
-- 기본형, 객체형 모두 가능, 상속전제 부모타입(다형성)
-- 고정 크기(확장 불가) : static collection
-- crud 기능 제공하지 않음
-- 배열명.length : 배열 크기 저장변수
## Collection API 활용
-- 자료 저장구조
-- 가변 크기 (자동 확장) : dynamic collection
-- 객체형 (Wrapper API 기본형, 자동 형변환 : int => Integer)
-- crud 포함한 다양한 메서드 제공
-- java.util.Collection : interface
-- java.util.List interface : 순서 존재, 중복 허용
=> ArrayList **, LinkedLit, Vector 등
-- java.util.Set interface : 순서 없음, 중복 불가
=> HashSet **, TreeSet, SortedSet 등
-- java.util.Map interface :
=> Key : Value
=> Key : unique(중복 불가)
=> HashMap **, Hashtable 등
## List CRUD 메서드 : 순서 존재, 중복 허용
-- equals() 메서드 재정의 여부에 따라 같은 객체여부 판단
-- 반환타입 E(Object) : instanceof, type casting
-- C
=> boolean add(E e)
=> void add(int index, E element)
-- R
=> E get(int index)
-- U
=> E set(int index, E element)
-- D
=> E remove(int index)
=> boolean remove(Object o)
-- 저장크기
=> int size()
## Set
-- C : boolean add(E e)
-- R : ??
=> boolean contains(Object o)
-- U : ??
-- D :
=> boolean remove(Object o)
=> void clear()
-- 저장크기
=> int size()
-- Iterator 반환타입 메서드??
=> Iterator<E> iterator()
=> Iterator interface
## Map >> HashMap
-- C
=> V put(K key, V value) : key가 존재하지 않으면 추가
=> Key data type : Object, String
-- R
=> V get(Object key)
-- U
=> V put(K key, V value) : key가 존재하면 변경
=> boolean replace(K key, V oldValue, V newValue)
=> V replace(K key, V value)
-- D
=> V remove(Object key)
-- 저장크기
=> int size()
## Iterator
-- boolean hasNext()
-- E next()
-- boolean remove(Object o)
## 중복정의 : 매개변수
doA("a", "b", "c");
doA("a", "b", "c", "d","e");
doA("a", "b");
## Collection
-- jdk1.4
-- Object : 모든 객체 저장 가능한 자료 저장구조(Collection)
-- 다형성
-- 조회 : Object
=> 부모타입은 자식객체 참조(referenc) 가능
=> 타입 부모타입이므로 자식의 멤버는 접근 불가
=> 실제 메모리에 생성한 자식객체의 멤버 접근
=> instanceof 여부 체킹
=> 실제 메모리에 생성한 자식객체 타입으로 형변환(type casting)
-- 예제 :
ArrayList list = new ArrayList();
list.add("hello"); // ok
list.add(1234); // ok
list.add(new Date()); // ok
list.add(new GeneralMember()); // ok
list.add(new SpecialMember()); // ok
Object obj = list.get(index);
if (obj instanceof 클래스이름) {
클래스이름 참조변수명 = (클래스이름)obj;
}
## Generic
-- jdk1.5
-- 지정한 객체(Element) 타입의 전용 Collection
-- 예제 :
ArrayList<Member> list = new ArrayList<Member>();
list.add("hello"); // error
list.add(1234); // error
list.add(new Date()); // error
list.add(new Member()); // ok
list.add(new Member()); // ok
Member dto = list.get(index);
dto.getMemberId();
dto.getMileage();
## 회원가입, 등록 : 필수 속성 + 선택 속성
## 전체 : 변경
-- 기존 정보 (아이디 변경불가 : 읽기전용)
-- 나머지 : 필요시 변경 입력
-- 휴대폰, 이메일
-- 아규먼트 : 회원객체(아이디) => 저장위치 => set(저장위치인덱스, 아규먼트전달받은객체)
-- 회원 속성중에서 사용자가 임의로 변경해서는 안되는 속성?? : 아이디, 등급, 가입일, 마일리지, 담당자
## 부분 변경
-- 보안, 인증
-- 비밀번호 변경
-- 아규먼트 : 아이디, 비밀번호, 변경할비밀번호 => 아이디 존재하는 저장위치 => 저장위치객체의 비밀번호 같은비교해 => 변경암호 변경처리
## 회원관리 기능 : 딱 3개만 기능 추가
-- 로그인
-- 아이디중복조회
-- 아이디찾기
-- 등급별 전체회원조회
'P > JAVA' 카테고리의 다른 글
8일차_ 6일차 + 7일차 + final, abstract, CRUD (0) | 2021.05.30 |
---|---|
7일차_ 6일차 + Class, static, final (0) | 2021.05.27 |
6일차_ 객체지향 특징(Object Oriented Programming; OOP) (0) | 2021.05.26 |
5일차_ 주석문, 생성자(Constructor), 생성자 중복정의, this keyword (0) | 2021.05.25 |
mission_java_회원관리시스템_요구사항 : 구성요소 분석 및 설계 (0) | 2021.05.25 |