본문내용
1. 프로그램 개요
1.1. 문제 개요
식수도용 물과 상수도용 물 클래스를 정의하고, 공통으로 물의 총량과 오염된 양을 매개변수로 보내어 초기화한 후 오염지수를 백분율로 나타낸다. 식수용과 상수용의 오염 단계 계산을 위한 함수에 오염 단계의 척도로 사용될 최소값과 최대값을 전달하여 오염단계를 산출하여 출력한다. 식수도용 물의 경우 다중상속 받은 인터페이스를 재정의하여 오염단계가 1단계일 경우에만 정제가 가능하도록 하며, 2단계와 3단계의 물은 식수용으로 사용하지 못한다. 상수도용 물의 경우 다중상속 받은 인터페이스를 재정의하여 오염단계가 2단계 혹은 3단계일 경우에만 정제가 가능하도록 하며, 1단계의 물은 식수도용으로 사용해야 하기 때문에 상수도용으로 사용하지 않는다. 4단계의 경우 식수도용과 상수도용 둘 다 사용하지 못하며 즉시 폐기처분한다. 식수도용과 상수도용이 모두 해당하는 오염단계일 경우 물을 정제하여 식수도/상수도용으로 정제되었다는 문장을 출력한다. 이는 식수와 상수 모두로 사용할 수 있는 물을 정제한다는 의미이다. 이와 같은 문제 개요를 통해 객체지향프로그래밍의 다양한 개념을 적용하여 구현할 수 있다.
1.2. 프로그램 구조
프로그램은 크게 서버와 클라이언트로 구성되어 있다. 서버는 포트번호 7777을 부여한 소켓을 생성하고 클라이언트의 접속을 기다린다. 클라이언트가 접속하면 자동으로 스레드가 생성되어 서버와 연결된다. 서버는 Vector 클래스를 이용하여 동적으로 소켓을 관리하며, 연결된 클라이언트의 수를 확인할 수 있도록 하였다. 또한 클라이언트 접속 및 예외 발생 시에 이를 처리하기 위한 예외처리 로직을 포함하고 있다.
클라이언트는 서버에 접속하기 위해 사용자의 이름과 비밀번호를 입력받고, IP와 포트번...