디자인패턴소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계방법을 정리한 패턴 디자인 패턴의 구성요소패턴의 이름 - 디자인 패턴을 부를 때 사용하는 이름과 디자인 패턴의 유형문제 및 배경 - 디자인 패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미솔루션 - 디자인 패턴을 이루는 요소들, 관계, 협동 과정사례 - 디자인 패턴의 간단한 적용 사례결과 - 디자인 패턴을 사용하면 얻게 되는 이점이나 영향샘플 코드 - 디자인 패턴이 적용된 원시 코드 디자인 패턴 유형목적에 따라생성 : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴구조 : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴행위 : 클래스나 객체들이 상호..
추상클래스하나 이상의 추상 메서드를 포함하는 클래스하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스 인터페이스모든 메서드가 추상 메서드로 이루어진 것다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스 공통점추상 클래스와 인터페이스의 공통점은 둘 다 추상 메서드를 가지고 있다는 것입니다.new 키워드로 인스턴스화할 수 없고 상속받아 구현한 구현체의 인스턴스를 사용해야 합니다.그리고 추상 메서드를 반드시 구현해야 합니다. 추상클래스와 인터페이스의 차이는 뭔가요?추상클래스단일 상속만 가능합니다.추상 메서드 외에 일반적인 필드, 메서드, 생성자를 가질 수 있습니다.클래스 간의 연관 관계를 구축하는 것, 클래스 멤버들을 통합 및 확..
객체 지향 프로그래밍이 뭔가요?기능보다 객체 중심으로 프로그래밍하는 것입니다.상속, 캡슐화, 다형성 등의 특징이 있습니다. 객체 지향 프로그래밍(OOP)프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 필요한 여러 데이터를 하나하나 각각 지정해주고 사용한다면 중복도 많고 오타 날 수도 있고 많은 문제가 있습니다.또한 변경이 필요할 때는 각 데이터에 다 일일이 수정해줘야 하는 불편함도 생깁니다. 하지만 객체 지향 프로그래밍을 사용한다면 클래스라는 틀을 정해두고(데이터를 추상화 시킴) 각 객체들을 구현해 주면 이런 문제를 해결할 수 있습니다. 수정도 클래스에서 수정해 주면 됩니다. 구현체들은 해당 클래..
오버로딩과 오버라이딩의 차이는 무엇인가요?오버로딩은 같은 메서드 이름을 사용하는데 매개변수의 개수나 타입이 다른 것이고,오버라이딩은 부모의 메서드를 상속받아 재정의해서 사용하는 것입니다. 오버로딩이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말합니다.이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용합니다. 오버라이딩상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의 하는 것을 말합니다.상속 관계 클래스에서 사용되며 static, final 로 선언한 메서드는 오버라이딩이 불가능합니다. 예제 코드상위 클래스 → 하위 클래스 오버라이딩public class Animal { publ..
간단한 1:1 채팅기능을 구현해보았다 이번에도 내 컴퓨터로 IP설정해서 테스트해봤다 Server import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class TcpChatServer { public static void main(String[] args) { ServerSocket server = null; Socket socket = null; try { server = new ServerSocket(7777); System.out.println("채팅서버 대기 중..."); socket = server.accept(); System.out.println("클라이언트와 연결되었습니다."); Se..
소켓이란? 두 호스트 간에 통신을 하기 위한 양 끝단(EndPoint)을 말한다 Server import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class TcpSocketServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(7777); Socket socket = server.accept(); TCP 소켓 통신을 하기 위해 ServerSocket 객체를 생성한다 포트번호를 매개변수로 사용했다 accep..