읽은 책 정리 53

자바가 확장한 객체지향

abstract 키워드 - 구현부가 없는 메서드 (객체 생성불가) - 추상메서드를 하나라도 갖고 있으면, 클래스를 반드시 추상클래스로 선언 - 추상메서드는 하위클래스에게 메서드 구현을 강제한다 // 오버라이딩 강제 생성자 - 개발자가 아무런 생성자를 만들지않으면 ,컴파일러가 자동구현 단, 생성자가 하나라도 있으면 컴파일러는 기본생성자를 만들어주지않음 final 키워드 - 클래스 (상속불가) - 메서드 (오버라이딩금지) - 변수 (한번할당하면, 변하지않는 상수값) instanceof - 만들어진 객체가 특정클래스의 인스턴스인지 확인하는연산자 - 객체 참조변수 instanceof 클래스명 - instanceof 연산자가 강력하기는 하지만 LSP(리스코프 치환원칙을 어기는 코트에서 주로나타는연산자이다 inte..

자바와 객체지향(OOP)

객체는 유일무이하게 존재하는 실체이기때문에 속성에 값을 갖고, 클래스는 개념이면서 분류체계일뿐 속성에 값을 가질수없다. 눈으로 보고,느끼고,생활하는 현실세계처럼 프로그래밍 할수없을까? 라는 고민속에서 객체지향 개념이 탄생됨. 눈을 보여지는것, 만져지는것, 상상되는 모든것은 사물(object)이다. (사물을 하나하나 이해하기보다는 사물을 분류(class)해서 이해하는것이 인간의 인지법이다.) 객체지향의 4대 특성 - 캡상추다 캡슐화 - 정보은닉 상속 - 재사용 추상화 - 모델링 다형성 - 사용편의 캡슐화 // 은닉화 - 관련이 있는, 변수와 함수를 하나의 클래스로 묶고, 외부에서 쉽게 접근하지 못하게 하는게 핵심 객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직접접근하거나 변경할 수 없고, 객체가 제..

[Java] Chapter14 람다와 스트림

1. 람다식 자바가 등장한이후로 큰변화가 두번있었는데, 첫번째는 JDK 1.5부터 추가된 지네릭스와, 두번째는 JDK 1.8부터 추가된 람다식의 등장이다 자바는 람다식의 도입으로 객체지향적언어 + 함수형 언어가 되었다. 1.1 람다식이란? 간단히 말해서 메서들르 하나의 식'(expression)'으로 표현한것이다. 함수를 간략하면서, 명확한 식으로 표현할수 있게 해준다. 메서드를 람다식으로 표현하면, 메서드의 이름과 반환값이 없어지므로 람다식을 '익명함수'라고도 한다 *메서드와 함수의 차이 -둘다 개념은 동일하나, 메서드는 특정 클래스에 반드시 속해야한다는 제약이 있고 함수는 아님 1.2 람다식 작성하기 '익명함수'답게 메서드에서 이름과,반환타입을 제거하고 매개변수선언부와 몸통{ } 사이에 ' -> '를..

[Java] Chapter12 지네릭스,열거형,애너테이션

1. 지네릭스란? - 지네릭스는 다양한 타입의 객체들을 다루는 메서드나, 컬렉션 클래스에 컴파일시의 타입체크를 해주는기능 (컴파일시 체크하기에, 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다) 꺼낼때 마다, 타입체크를 하고 형변환을 하는것을 불편할수밖에없다. 게다가 원하지 않는 종류의 객체가 포함되는것을 막을방법이 없다. 이러한걸 제네릭스가 해결해줌. 1.2 지네릭클래스의 선언 - 지네릭 타입은 클래스와 메서드에 선언가능. (아래와 같이 클래스 옆에 을 붙이면됨. //는 타입변수라 하며, T가 아닌 다른것도 사용 가능. 타입변수가 여러개인경우 Map와 같이 콤마 ' , ' 로 구분자로 나열하면된다. 1 2 3 class Box{ T item; } cs 지네릭스의 용어 1 2 3 4 class ..

[Java] Chapter11 컬렉션 프레임워크

1. 컬렉션 프레임워크 - 데이터(다수의 데이터를 저장하는) 표준화된 프로그래밍 방식 다수의 데이터를 다루는데 필요한 다양하고, 풍부한 클래스를 제공 또한 인터페이스와, 다형성을 이용한 객체 지향적 설계를 통해 표준화 되어있다. 1.1 컬렉션 프레임웍의 핵심인터페이스 - 각 데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고, 3개의 인터페이스를 정의함. 그리고, 인터페이스 List와 Set의 공통된 부분을 뽑아 새로운 인터페이스 Collection 추가 정의. (Map은 List와 Set과 다른형태로 데이터를 다루기에 Collection 에 포함 X) List - 순서 O , 중복 O Set - 순서 X , 중복 X Map - 키와 값의 쌍으로 이루어진 데이터 . 순서 X , 키중복 X 값 중복 O ..

[Java] Chapter10 날짜와 시간 & 형식화

1. 날짜와 시간 1.1 Calendar와 Date 1) Date 클래스( Date는 대부분 메서드가 'depreated'가 되어 있으므로 잘 사용 안한다.) 2) Calendar 클래스 3) java.time 패키지 순으로 기존 단점을 개선한 기술이 나옴. - Calendar 는 추상 클래스이기때문에, 직접객체 생성 X (get 메서드로 구현된 클래스 인스턴스 가져오기) > Calendar cal = Calender.getInstanc(); - Calender 클래스 사용 ( 시간설정은 set 으로도 가능, 시간 추가는 add메서드 사용) 두개의 날짜가 있을때, 시간차이를 비교하려면 서로 모두 초로 변경하고 초끼리 뺴고 , 나누기 1000을 해준다. 1 2 3 4 Calendar today = Cale..

[Java] Chapter09 Java.Iang 패키지와 유용한클래스

Java.Iang 패키지 - 가장 기본이 되는 클래스들을 포함하고 있다. Object 클래스 - 멤버 변수는 없고, 오직 11개의 메서드만 가지고 있다. 아래의 메서드는 자주사용하는것만 작성했다 Object클래스의 메서드 protected Object clone() 객체 자신의 복사본을 반환한다 public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다.(같으면 true) public Class getClass() 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스를 반환한다 public int hashCode() 객체 자신의 해시코드를 반환한다(주소값) public String toString() 객체 자신의 정보를 문자열로 반환한다 protec..

[Java] Chapter08 예외처리

프로그래밍오류 - 에러(error) -> 코드에의해 수습될수없는 심각한 오류 - 예외(excetion) -> 코드에 의해 수습될수 있는 미약한오류 예외 클래스의 계층구조 - 모든 예외의 최고조상은 Exception 클래스이며, 크게 두그룹으로 나누어짐1) Excetion 클래스와 그 자손들 (주로 사용자의 실수//외부영향에 의해 발생)2) RuntimeExcetion 클래스와 그 자손들 (주로 프로그래머 실수) 예외처리하기 try-catch문 - 프로그래밍이 갑작스러운 비정상 종료를 막고, 정상적인 실행 상태를 유지할수 있도록 하는것. try{에 선언된 코드중 예외가 발생한 시점에 바로 catch문으로 가기때문에 예외발생 시점의 try 아래의 코드는 실행 X 예외 발생시키기 - 키워드 throw를 사용해..

[Java] Chapter07 객체지향 프로그래밍

상속 - 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는것 (새로 작성하고자 하는 클래스의 이름뒤에 상속받고자 하는 클래스의 이름을을 키워드 'extends'와 함께 써주면됨) - 조상 클래스가 변경되면, 자손클래스는 영향받지만, 자손클래스가 변경되어도 조상클래스는 영향 X (생성자와 초기화 블럭은 상속 X) 자손클래스의 멤버 개수는 조상보다 같거나 많다 자손클래스의 인스턴스를 생성하면, 조상클래스의 멤버와 자손클래스 멤버가 합쳐진 인스턴스로 생성됨 클래스간의 관계 - 포함관계 - 하나의 거대한 클래스를 작성하는것보단, 단위별로 여러개의 클래스를 작성한다음 이 단위로 클래스들을 포함관계로 재사용 하는 방법이 간결하고 손쉽게 클래스 작성가능. 1 2 3 4 5 6 7 8 9 10 11 12 ..

[Java] Chapter06 객체지향언어

객체지향 언어의 역사 - 재사용성과 유지보수 그리고 중복된 코드의 제거에 중점적으로 고안되서 나온언어 클래스와 객체의 정의와 용도 - 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된대로 생성됨 객체와 인스턴스 - 클래스로 부터 객체를 만드는과정을 클래스의 인스턴스화 라고하며, 어떤 클래스로부터 만들어진 객체를 그클래스의 인스턴스라고 한다 객체의 구성요소 - 객체는 속성과 기능의 집합이라 할수 있다(멤버변수와 메서드) 인스턴스의 생성과 사용 - 참조변수에는 하나의 값 (주소)만이 저장될수 있으므로, 둘이상의 참조변수가 하나의 인스턴스를 가리키는것(참조하는)것은 가능하지만 하나의 참조변수로 여러개의 인스턴스를 가리키는것은 가능하지 않다. 객체 배열 - 객체 역시 배열로 다루는것이 가능, TV [..