프로그래밍/Java
-
[JAVA]객체 지향 디자인 패턴 - State Pattern(상태 패턴)프로그래밍/Java 2022. 3. 22. 20:57
State Pattern이란? 상태의 범위가 정해져 있고, 상태를 객체단위로 관리하고 싶을 때 사용한다. 상태들은 공유해야하는 특성을 갖는다. 구조는 strategy패턴과 거의 동일하여 strategy패턴과 많이 혼동이 오는데 차이점은 state를 알려주고 서로 변경해주어야 한다는 점이다르다. State Pattern Structure(상태 패턴 구조) Context : 상태 패턴을 이용하는 역할을 수행한다. 하나의 객체에 상태를 조절하는 메소드를 부르는 역할을 한다. State : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 상태 알고리즘을 호출하는 방법을 명시한다. ConcreteState1, ConcreteState2, ConcreteState3 : State의 실제 알고리즘 구현부와 Sta..
-
[JAVA]객체 지향 디자인 패턴 - Strategy Pattern(전략 패턴)프로그래밍/Java 2022. 3. 22. 14:48
Strategy Patter(전략 패턴)이란? 하나의 똑같은 행동이 있는데 전략마다의 구현부가 다르게 동작하고 싶을 때 사용하는 패턴이다.같은 기능이지만 서로 다른 전략을 가진 클래스들을 구현하는 것 옵션 들마다의 행동들을 모듈화해서 독립적이고 상호 교체 가능하게 만드는 것을 의미한다. Strategy Pattern Structure(전략 패턴 구조) Context : 전략 패턴을 이용하는 역할을 수행한다. 필요에 따라 동적으로 구체적인 전략을 바꿀수 있도록 setter()메서 드를 제공한다. Strategy : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시한다. ConcreteStrategy1, ConcreteStrategy2, ConcreteStrategy3 : ..
-
[JAVA]객체 지향 디자인 패턴 - Singleton Pattern프로그래밍/Java 2022. 3. 22. 14:20
Singleton Pattern - 생성패턴의 일종으로 기초가 되는 가장 쉬운 디자인 패턴 하지만, 많이 중요한 디자인 패턴 - 프로그램에서 존재해야 하지만 객체 하나만 할당 받아 사용해야하는경우 - 생성된 객체가 어디에서든지 참조가 가능해야함 Singleton Structure - 싱글턴 구조는 하나의 객체가 있어야 하며, 한번만 생성되는 영역이 있어야함 - 그리고 다른 곳에서(FirstPage, SecondPage)에서 그 영역에 공통적으로 접근이 가능해야하며 동일 값을 가져 올 수 있도록 해야함 Singleton Example 1 (출처. 얄팍코딩) - settings라는 객체가 있다고 가정 - settings에 화면 darkmode, lightmode가 있다고 하고 이것을 darkmode로 설정하..
-
[Java Interface] 인터페이스를 사용하는 이유프로그래밍/Java 2022. 3. 20. 13:04
인터페이스(Interface) 구현 코드가 없는 메서드들의 집합을 의미함. 모든 메서드가 추상 메서드로 선언됨 적지 않아도 추상 메서드로 JVM에서 알아서 선언 모든 변수는 상수로 선언됨 모든 인터페이스는 형변환이 가능 형변환해서 사용한다고 하면, 상위 인터페이스 객체로 만들면 상위 인터페이스에 있는 메서드만 사용가능하고 하위클래스에서 만든 함수는 사용하지 못함 인터페이스 사용법 interface로 생성된 곳에 상속받아 구현할 메서드의 내용만 작성함 implements를 사용하여 상속을 받음 하위클래스에서 interface에 정의된 내용을 일부분만 구현을 한다면 abstract를 사용하여 처리해야함, 다 구현을 한다면 abstract를 정의 하지 않아도됨 인터페이스를 사용하는 이유 클래스나 프로그램이 제..
-
[JAVA abstract]추상화 클래스 , 메서드 알아보기프로그래밍/Java 2022. 3. 20. 11:15
추상화 클래스 구현 코드 없이 메서드의 선언만 있는 추상메서드를 포함한 클래스 메서드 선언 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의 네서드구현과 동일 한 의미 구현부를 가짐 추상 클래스는 new할 수 없음(인스턴스 생성 x) 추상클래스 사용 방법 클래스 앞에 abstract를 붙인다 추상 메소드가 있어야 한다. 하위 클래스에서 추상화가 적용된 부분을 모두 재구성하여 사용한다면 abstract를 사용하지 않아도 된다. 하위 클래스에서 추상화가 적용된 부분을 모두 재구성하지 않는다면 abstract를 클래스와 함수에 붙여두어야한다. 안그럼 오류 발생 //추상 클래스 public abstract class Computer { public abstract void display(); public a..
-
[Java Overriding] 오버라이딩과 다형성프로그래밍/Java 2022. 3. 20. 10:50
오버라이딩(Overridng) 오버라이딩은 상속관계에서 하위 클래스가 상위 클래스의 함수를 재정의 하여 사용하고 싶을 때 사용한다. 오버라이딩은 상속을 받은 객체에서 함수위에 @Override이라는 표시를 해주어야 하며, 상위 객체의 함수 명과 형식이 똑같아야 사용가능하다. 다른경우 다른 함수로 취급된다. 상속관계에서 객체를 생성할 때 형변환 하여도 new에 적힌 객체의 함수가 호출이 된다.(가상 메서드 활용하기 때문) 재정의 하지 않고 그냥 동일하게 사용하고 싶다면 super.함수()를 사용한다. 그런데 굳이 이렇게 사용하지 않는다. 예제 Customer라는 객체 클래스에서 CalcPrice라는 함수를 재정의 하여 사용해보자. public class Customer { protected int cust..
-
[Java ] 클래스 상속 및 상속을 사용하는 이유프로그래밍/Java 2022. 3. 20. 10:37
상속 상속이란? 미리 정의된 내용을 하위 클래스에서 받아서 재정의 및 재사용하는 행위를 일컸는다. JAVA에서 상속 클래스 하나당 한번씩만 상속이 가능하다. 여러번 상속받는 개념은 인터페이스에서 가능하다. 상속에서 구현할 내용은 상위 클래스 속성을 private 을 사용하지 않고 같은 패키지나 하위 클래스에서 사용가능한protected를 사용한다. 상위 클래스의 내용을 재정의 할 때는 super()로 정의 한 다음 작성하지 않는 경우 JVM에서 임의로 컴파일 한다. 상속받는 하위 클래스에서 생성자는 기본적으로 묵시적 생성이 되지만, 변화가 있을 경우 명시적으로 표현해 주어야한다. 고객관리 프로그램 예제 상품을 파는 쇼핑몰에서 Customer라는 객체가 있고 이는 일반 고객이다. Customer라는객체를 ..
-
[Java 객체지향 입문 ] 객체간의 협력프로그래밍/Java 2022. 3. 17. 13:07
객체간의 협력이란? 저는 객체간의 협력이 일상생활에서 사용되는 협력관계를 코드로 구현하기 위한 노력이라고 생각합니다. 바로 예로 보시는게 이해하기 빠를 것같습니다. 학생이 도서관에서 2권의 책을 빌렸다고 생각해 봅시다. 그럼 이 부분을 코드로 구현하기 위해서는 학생, 도서관이라는 객체가 필요 하며 둘다 책이라는 속성이 필요 합니다. 객체를 만든 코드를 보면 아래와 같이 작성 할 수 있습니다. //Student.java public class Student{ String studentName; int bookCount; public Student(String studentName, int bookCount) { this.studentName = studentName; this.bookCount = book..