반응형

Java 7

[Java] 객체 정렬 Comparable vs Comparator

Comparable Interface 정의 정렬 수행 시에 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의하는 인터페이스로, Java에서 제공되는 정렬이 가능한 모든 클래스들은 Comparable Interface를 구현하고 있습니다. 정렬 시에 이 기준에 맞게 정렬이 수행됩니다. 1) Integer, Double 클래스 : 오름차순 정렬 2) String 클래스 : 사전순 정렬 java.lang.Comparable 구현 방법 정렬할 객체에 Comparable Interface를 implements 후, compareTo() 메서드를 오버라이드하여 구현합니다. compareTo() 메서드 작성법 현재 객체 < 파라미터로 넘어온 객체 : 음수 리턴 현재 객체 == 파라미터로 넘어온 객체 : 0 리턴 현..

Java 2022.02.20

[Java] 데이터 직렬화(Serialization)와 역직렬화(Deserialization)

데이터 직렬화(Serialization) 정의 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것을 '데이터 직렬화'라고 합니다. 사용 이유 데이터의 메모리 구조는 크게 2가지로 나뉩니다. 1) 값 형식(Value Type) 데이터 : int, float, char 등의 값 형식 데이터들은 스택에 메모리가 쌓이고 직접 접근이 가능합니다. 2) 참조 형식(Reference Type) 데이터 : 포인터 변수나 객체 타입의 변수들이 여기에 해당됩니다. 해당 형식의 변수를 선언하면 힙에 메모리가 할당되고, 스택에서는 이 힙 메모리를 참조하는 구조로 되어있습니다. 디스크에 저장하거나 통신을 할 때에는 위 두가지 중 값 형식(Value Type) 데이터만 가능합니다. 참조 형식(Refe..

Java 2022.02.20

[Java] 싱글턴(Singleton) 디자인 패턴

싱글턴(Singleton) 디자인 패턴 객체의 생성 제어 객체를 계속 생성/삭제하는데 많은 비용이 들어서 재사용이 유리한 경우, 혹은 여러 개의 객체가 필요없는 경우에는 객체의 생성을 제한하는 것이 좋습니다. 여러 개의 객체가 필요없는 경우는 수정 가능한 멤버 변수가 없고 기능만 있어서 객체를 구별할 필요가 없는 경우, 그리고 객체가 가진 고유한 특징 없이 동작만 중요한 경우(stateless)가 존재합니다. 싱글턴(Singleton) 생성 방법 1) 생성자의 접근 제한자를 private으로 설정하여 외부에서 생성자에 접근할 수 없도록 합니다. 2) 내부에서는 private에 접근 가능하므로 직접 객체를 생성하는데, 멤버 변수이므로 접근 제한자는 private으로 설정합니다. 3) 외부에서 private..

Java 2022.02.20

[Java] 생성자와 초기화

생성자와 초기화 생성자의 개념 생성자(constructor)는 클래스로부터 객체를 생성할 때 멤버 필드의 값을 초기화하는 등 기본적인 처리를 수행합니다. 생성자의 정의 생성자를 정의하는 방법은 메소드를 정의하는 방법과 유사하지만 몇 가지 다른점이 존재합니다. 첫째, 생성자의 이름은 반드시 클래스의 이름과 같아야 합니다. 둘째, 생성자는 메소드가 아니므로 리턴 타입이 없어야 하며, void로 선언될 수도 없습니다. class A { public A() {...}// 생성자 public void A(int i) {}// 생성자가 아님 } 셋째, 클래스를 상속하면 메소드는 자동으로 상속되지만 생성자는 상속이 되지 않습니다. 생성자를 지정하지 않으면 매개변수를 갖지 않은 생성자가 자동으로 생성되는데, 이를 디폴..

Java 2022.02.18

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLQEN3%2FbtqXDeHJhd7%2FlJ2xuEf5vGW58tq8OLweCK%2Fimg.png')"

[Java] 객체 지향 설계 5원칙_SOLID

SOLID -객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙으로 제시한 것으로, 응집도는 높이고(High Cohesion), 결합도는 낮추라(Loose Coupling)는 고전 원칙을 객체 지향의 관점에서 재정립한 것입니다. *결합도와 응집도* 좋은 소프트웨어 설계를 위해서는 결합도(coupling)는 낮추고 응집도(cohesion)는 높이는 것이 바람직합니다. -결합도: 모듈(클래스) 간의 상호 의존 정도로서 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이합니다. 결합도 수준: 데이터 결합도 > 스탬프 결합도 > 컨트롤 결합도 > 외부 결합도 > 공유 결합도 > 내용 결합도 -응집도: 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로, 응집도가..

Java 2021.02.17

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW5N0X%2FbtqXj8hteJF%2Ff4UxgdYUOJhYG9dMGrTou0%2Fimg.png')"

[Java] 자바가 확장한 객체 지향

abstract 키워드-추상 메소드와 추상 클래스 추상 메소드: 선언부는 있는데 구현부가 없는 메소드 추상 메소드를 하나라도 가지고 있는 클래스는 반드시 추상 클래스로 선언해야 합니다. 추상 메소드와 추상 클래스의 특징 //동물.java public abstract class 동물 { abstract void 울어보세요(); } 1. 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 합니다. //Driver.java public class Driver { public static void main(String[] args) { 동물[] 동물들=new 동물[3]; 동물들[0]=new 쥐(); 동물들[1]=new 고양이(); 동물들[2]=new 강아지(); for(int i=0;i 동물 클래스 레디 온..

Java 2021.02.17

has-thumbnail="1" style="background-image:url('https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ0o8u%2FbtqW4gFS9gK%2FeUYB9IrT6qG2m0m4FAE7i0%2Fimg.png')"

[Java] 객체 지향의 4대 특성

1. 추상화(모델링) 2. 상속: 재사용+확장 3. 다형성: 사용편의성 4. 캡슐화: 정보 은닉 추상화(모델링) -'추상': 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 -'모델': 실제 사물을 정확히 복제하는 게 아니라 목적에 맞게 관심 있는 특성만을 추출해서 표현하는 것. 즉, 추상화를 통해 실제 사물을 단순하게 묘사하는 것 -객체 지향의 추상화는 곧 모델링입니다. 즉, 추상화란 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합하는 것입니다. 객체(Object)와 클래스(Class) 간의 관계 클래스:객체=펭귄:뽀로로=사람:김연아=쥐:미키마우스 -객체는 유일무이한 사물이며, 클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념입니다. -객체 ..

Java 2021.02.11
반응형