본문 바로가기
  • soobinhand의 기술 블로그
728x90

전체 글119

[자바 프로그래밍 언어] 5장 중첩 클래스와 인터페이스 5.1 정적 중첩 타입 중첩 타입을 정의할 수 있다는 것은 다음의 두 가지 주요 용도를 지원할 수 있다는 것을 의미한다. 중첩 클래스와 중첩 인터페이스가 논리적으로 관련된 그룹에 구조화되고 같은 범위에 속하는 타입이 될 수 있게 해준다. 중첩 클래스가 논리적으로 연관된 객체를 간단하고도 효율적으로 연결할 수 있다. 중첩 타입은 이 타입을 선언한 타입의 일부분이 되며 이 둘은 서로의 멤버에 접근할 수 있는 관계. 정적일 경우에는 단순한 구조의 타입을 허용하는 반면, 아닐 경우에는 중첩 객체와 이를 감싸는 외부 객체와의 특별한 관계를 정의해야 한다. 외부 클래스나 인터페이스 내에 static 멤버로 선언된 중첩 클래스나 중첩 인터페이스는 최상위 클래스나 최상위 인터페이스처럼 동작한다. 중첩 타입의 이름은 ".. 2021. 12. 25.
[자바 프로그래밍 언어] 4장 인터페이스 4.1 인터페이스 예제 인터페이스는 메소드의 집합이나 이 타입의 협약을 구성하는 다른 타입을 포함하여 추상적인 형태로 작성된다. 그래서 인터페이스는 구현을 포함할 수 없고 인터페이스의 인스턴스를 생성할 수도 없다. 인터페이스는 설계만을 표현한 것이며 클래스는 설계와 구현을 함께 표현한 것이다. 대부분의 인터페이스는 여러 클래스의 다양성을 표현할 수 있는 특성을 정의하고 있다. 이 특성들은 어떤 것을 할 수 있다는 의미로 'able'을 포함한다. cloneable - 이 타입의 객체는 복제를 지원한다. comparable - 이 타입의 객체는 비교할 수 있는 순서를 가진다. Runnable - 이 타입의 객체는 독립적인 스레드로 실행할 수 있는 작업 단위를 표현한다. 클래스는 슈퍼 인터페이스에 정의된 메소.. 2021. 12. 24.
[자바 프로그래밍 언어] 3장 클래스 확장 3.1 확장 클래스 주어진 클래스의 객체가 원래 클래스나 이를 확장한 클래스처럼 다양한 형식을 가질 수 있는 것을 다형성이라고 한다. 클래스 확장은 두 가지 형식의 상속을 제공한다. 협약 또는 타입의 상속, 이것에 의해 서브 클래스는 슈퍼 클래스의 타입을 얻어 슈퍼 클래스가 사용될 수 있는 곳에 다형적으로 사용될 수 있다. 구현의 상속, 서브 클래스는 슈퍼 클래스의 접근 가능한 필드와 메소드의 구현을 획득한다. 클래스 확장은 다양한 목적으로 사용할 수 있지만 주로 특수화를 위해 사용한다. 특수화란 특정 클래스를 확장하는 서브 클래스에서 새로운 행동을 정의하여 서브 클래스가 슈퍼 클래스의 특수화된 버전이 되는 것을 말한다. 외부 클래스에서 접근할 수 있는 메소드와 필드의 집합 그리고 클래스의 멤버들이 어떻.. 2021. 12. 23.
[Algorithms] 1장 - Fundamentals BinarySearch - 이진 탐색 https://github.com/Soobinhand/Algorithms/blob/master/src/Search/BinarySearch.java Stack - 스택 ( 기본 ) https://github.com/Soobinhand/Algorithms/blob/master/src/DataStructure/Stack.java LinkedStack - 스택 ( 링크드 리스트 ) https://github.com/Soobinhand/Algorithms/blob/master/src/DataStructure/LinkedStack.java Queue - 큐 ( 기본 ) https://github.com/Soobinhand/Algorithms/blob/master/src/Data.. 2021. 12. 22.
[자바 프로그래밍 언어] 2장 클래스와 객체 2.1 단순한 클래스 자바 프로그래밍의 기본 단위는 클래스이다. 클래스는 메소드를 정의한다. 이름을 잘 짓는 것은 클래스 설계의 핵심이다. 제한자가 없는 클래스는 오직 소속된 패키지 내에서만 접근할 수 있다. abstract 클래스는 불안정한 것으로 간주되므로 클래스의 인스턴스를 생성할 수 없다. final 클래스는 상속할 수 없다. 클래스는 동시에 final과 abstract가 될 수 없다. public 클래스가 파일당 오직 한 개만 존재해야 한다. 2.2 필드 클래스에 선언하는 변수를 필드라고 한다. 서로 다른 인스턴스로 분리된 객체의 필드가 의미하는 것은 각 객체만의 유일한 상태를 가진다는 것이다. 이러한 필드를 인스턴스 변수라 한다. 필드는 동시에 final과 volatile이 될 수 없다. 가끔.. 2021. 12. 22.
[자바 프로그래밍 언어] 1장 자바 개요 1.1 시작하기 자바 프로그램은 클래스로 만들며 이 클래스를 사용해 클래스 인스턴스인 객체를 생성할 수 있다. 프로그램이 실행될 때, main 메소드가 가장 먼저 호출된다. 필드는 클래스나 클래스 객체에 속하는 데이터 변수로써 객체나 클래스의 상태를 표현한다. static은 main 메소드가 이 클래스이 특정 인스턴스가 아닌 클래스 자체에 소속되게 해준다. 1.2 변수 모든 기본 타입은 각각의 기본 타입과 대응되는 객체 타입을 가지고 있다. 이를 래퍼 클래스라 부른다. 지역 변수는 초기화 전에는 정의되지 않은 상태이며 선언 시에 초기화하지 않아도 된다. 실제 호출되는 메소드는 런타임 시에 전달되는 인자의 수와 타입에 따라 결정된다. 이는 매우 강력한 기능이다. 1.3 주석 코드에 주석을 제대로 작성하는 .. 2021. 12. 22.
[Python] 문자열 뒤집기 [Python] 문자열 뒤집기 방법은 2가지 정도가 있습니다. slice reversed() slice 보통 문자열 슬라이싱을 할 때, [start:stop:step] 의 형식으로 자르게 됩니다. 그래서 a[0:2] 라고 한다면 a[0]a[1]이 반환이 되는 것입니다. 여기서 반대 방향으로 자르는 방법은 string[::-1]입니다. reversed() reversed_string = "".join(reversed(string)) 2021. 12. 21.
[디자인 패턴] Template Method Pattern 목적 알고리즘의 뼈대를 정의하고 일부를 서브 클래스로 위임함. 템플릿 메소드는 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의할 수 있도록 함. 문제 상황 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재함. 해결 방안 알고리즘의 중복되는 부분을 부모 클래스에 캡슐화시키고 달라지는 부분만 서브 클래스에서 구현. 결과 중복되는 코드를 줄임. 유지 보수에 유리함. 코드 https://github.com/Soobinhand/Design_Pattern GitHub - Soobinhand/Design_Pattern: 디자인 패턴 연습 디자인 패턴 연습. Contribute to Soobinhand/Design_Pattern development by creating an .. 2021. 12. 14.
[디자인 패턴] MVC Pattern 목적 업무 로직 및 데이터와 보이는 부분을 분리. 사용자 인터페이스 로직이 비즈니스 로직보다 더 자주 바뀐다면 MVC를 사용하는 것이 바람직함. 화면을 포함하는 사용자 인터페이스와 업무 처리 부분을 분리해서 동작할 수 있도록 함. 문제 상황 데이터와 해당 데이터를 보여주는 부분의 코드가 섞여 있음. 해결 방안 데이터와 뷰를 분리하고 이들을 연동시키는 컨트롤러를 추가. 결과 loose coupling, 재사용성 코드 https://github.com/Soobinhand/Design_Pattern GitHub - Soobinhand/Design_Pattern: 디자인 패턴 연습 디자인 패턴 연습. Contribute to Soobinhand/Design_Pattern development by creatin.. 2021. 12. 14.
[디자인 패턴] Composite Pattern 목적 부분-전체 계층 구조를 보일 수 있도록 객체들을 트리 구조로 구성. Composite pattern은 클라이언트로 하여금 각 객체와 객체의 묶음을 동일하게 다룰 수 있도록 함. 문제 상황 프로그램에서 각각의 객체 또는 계층 구조로 이루어진 객체 묶음을 다루어야 함. 해결 방안 개별 객체와 복합 객체에 대해 동일한 작업을 적용시킬 수 있도록 함. 대부분의 경우에 개별 객체와 복합 객체의 차이를 무시할 수 있도록 함. 결과 유지 보수에 유리함. 코드 https://github.com/Soobinhand/Design_Pattern 2021. 12. 14.
728x90