일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 포인트클라우드
- Hibernate
- 자바ORM표준JPA프로그래밍
- 자율주행
- Python
- 배달로봇
- 자바
- 프로그래머스
- 네트워크
- cartograhper
- 딥러닝
- MySQL
- Database
- 디자인패턴
- 아두이노
- DeepLearning
- JPA
- 이펙티브자바
- Java
- Jetson
- 논문
- 장애물인식
- 논문리뷰
- 파이썬
- Spring Batch
- persistance context
- 알고리즘
- 운영체제
- 영속성컨텍스트
- 자료구조
- Today
- Total
목록자바 (7)
제리 devlog
자바의 다중 구현 매커니즘 : 인터페이스, 추상 클래스 자바 8부터는 인터페이스도 default 메서드를 제공할 수 있다. 인터페이스 vs 추상 클래스 공통점 선언 내용은 존재하지만 구현 내용은 없다(추상 메서드를 갖는다) 인스턴스로 생성할 수 없다. 목적 인터페이스 : 함수의 껍데기만 존재해서 구현을 강제한다. 구현 객체가 같은 동작을 하도록 보장한다. Has - A 추상 클래스: 추상 클래스를 상속 받아 기능을 이용하고 추가시킨다. Is - A 다중 상속 인터페이스 : 여러개의 인터페이스를 구현할 수 있다. 추상 클래스 : 여러 클래스를 상속 받을 수 없다. 책 본문 내용중 타입이라는 표현은 구현해야하는 메서드를 아울러 표현하는 것으로 이해했다. 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 ..
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만든다. 여기서 말하는 상속이란 클래스와 클래스 간에 상속(구현 상속)을 말하며 인터페이스를 구현하거나 인터페이스가 다른 인터페이스를 확장하는 상황과는 무관하다. 상속의 문제점 public class InstrumentedHashSet extends HashSet { //추가된 원소의 수 private int addCount = 0; public InstrumentedHashSet(int initCap, float loadFactor){ super(initCap, loadFactor); } @Override public boolean add(E e) { addCount++; return supe..
자바의 명명 규칙은 크게 철자와 문법 두 범주로 나뉜다. 철자 규칙은 패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다. 철자 규칙은 특별한 이유가 없는 한 반드시 따라야한다. 그렇지않으면 API를 사용하기 어렵고 유지보수도 힘들다. (다른 프로그래머들이 코드를 읽기 어렵고 뜻을 오해하는 경우가 생길 수 있음) *철자 규칙 식별자 타입 예 패키지와 모듈 org.junit.jupiter.api, com.google.common.collect 클래스와 인터페이스 Stream, FutureTask, LinkedHashMap, HttpClient 메서드와 필드 remove, groupingBy, getCrc 상수 필드 MIN_VALUE, NEGATIVE_INFINITY 지역 변수 i, d..
저자는 최적화를 최대한 지양하라고 한다. 최적화는 좋은 결과보다는 해로운 결과로 이어지기 쉽고, 섣불리 진행하면 특히 더 그렇다. 성능 때문에 견고한 구조를 희생시켜서는 안된다. 빠른 프로그램보다 좋은 프로그램을 작성해야한다. 좋은 프로그램은 정보 은닉 원칙을 따른다. 그렇기에 개별 구성요소의 내부를 독립적으로 설계할 수 있다. 시스템의 나머지에 영향을 주지않고도 각 요소를 다시 설계할 수 있는 것이다. *정보 은닉 : 캡슐화에서 가장 중요한 장점으로 다른 객체에게 자신을 숨기고 자신의 연산을 통해서만 접근하게한다. 객체의 정보를 직접 꺼내오지 않으므로 유지 보수에 용이해진다. ex) 객체의 필드 명이 바뀐경우 혹은 특정 로직이 바뀐 경우 객체의 값을 꺼내 처리한 부분을 모두 찾아 수정해야함 public..
이번 item은 책 분량상 약 1쪽이 조금 넘는 분량이기 때문에 다루는 내용이 굉장히 간략하다. 따라서 자주 등장했던 static의 개념도 추가로 다뤄 보고자한다. 책의 도입부는 이렇게 시작된다. "단순히 static 메서드와 static 필드만을 담은 클래스를 만들고 싶은 때가 있을 것이다. 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이기에 그리 곱게 보이지는 않지만, 분명히 나름 쓰임새가 있다. 예컨데 java.lang.Math, java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있다." 여기서 객체 지향적인 사고란 어떤 것을 의미하는지 생각해보기전 static의 특성에 대해 생각해보자. new 키워드를 통해 생성된 객체는 heap영역에 생성되고 GC에..
싱글톤 : 인스턴스를 오직 하나만 생성할 수 있는 클래스 싱글톤 패턴을 왜 사용할까? 인스턴스를 오직 하나만 생성하므로서 객체를 여러번 생성할 필요가 없고 객체를 공유할 수 있음. 스프링에서 관리하는 bean은 싱글톤 패턴으로 만들어져 의존성을 주입할때 동일한 객체를 사용함. DBCP(DataBase Connection Pool)의 경우에도 DB와 애플리케이션을 연결하기위해 매번 객체를 생성하여 관리하는 것보다 최초의 생성된 객체를 재사용하면서 connection을 관리하는게 더 효율적임 싱글톤을 만드는 3가지 방법 첫번째, public static 맴버가 final로 선언된 경우 public class Elvis{ public static final Elvis INSTANCE = new Elvis();..
public class NutritionFacts { private final int servingSize; //(ml, 1회 제공량) 필수 private final int servings; //(회, 총 n회 제공량) 필수 private final int calories; //(1회 제공량당) 선택 private final int fat; //(g/1회 제공량) 선택 private final int sodium; //(g/1회 제공량) 선택 private final int carbohydrate; } 식품 영양정보를 나타내는 class이다. 필드는 총 6가지가 있다. 1. 점층적 생성자 패턴 public class NutritionFacts { private final int servingSize; /..