본문 바로가기

interface

[Java] Interface. - 아주 간단한 테스트 프레임웍 만들어보기 3 - 앞선 포스트에서는 Interface를 사용해서 같은 Interface를 구현한 테스터 클래스들을 한번에 실행하여 그 결과를 볼 수 있는 Tester.java 까지 구현하였습니다. Tester.java 새로운 테스터가 추가되어야 한다면 ProductTester Interface를 구현하여 위 Tester.java 에서 그 클래스를 add해주면 되었습니다. 하지만, 매번 이렇게 테스터가 추가 될 때 마다 클래스를 수정하고, 컴파일해서 배포를 해야 한다면 조금 귀찮은 작업이 될 수도 있습니다. 그리고, 실제로 현장에서 사용되는 테스터 클래스가 한두개가 아닐 수 있는데 그렇게 되면 Tester.java의 클래스는 addTester 메서드로 도배가 될 것 입니다. 그래서 간단하게 프로퍼티를 사용해서 , 테스트 할.. 더보기
[Java] Interface. - 아주 간단한 테스트 프레임웍 만들어보기 2 - 앞선 포스트에서 테스트 프로그램을 만들어서 돌리는 간단한 프로그램을 만들었습니다. 물론 내부 로직은 다 빠지고 형태만 보여주기 위한 코드였고요.. 최종적으로 나온 Tester.java 의 모습은 아래와 같았습니다. 2개의 테스터 클래스가 보입니다. 내부로직으로 구현되어 있지는 않지만 ProductListsComapreTester.java는 상품 리스트를 검색해서 그 정렬 순서가 원하는 순서대로 정렬되어 있는지 확인하는 Tester 클래스입니다. ProductRankScoreTester.java는 다른 두개의 검색 서버가 있다고 가정 할 때 각각의 서버에 검색을 하고 그 두개의 결과가 일치하는지 확인하는 Tester 클래스입니다. 물론, 내부 로직은 구현을 하지 않았습니다. 일단, 앞에서 이제 인터페이스를.. 더보기
[Java] Interface. - 아주 간단한 테스트 프레임웍 만들어보기 1 - Java책을 보면서 공부를 하면 Interface에 대한 내용을 볼 수 있습니다. 제 기억으로 처음 자바를 공부하는 입장에서 가장 기억에 남았던 것은 인터페이스는 내용 없는 메서드 정의가 가능하고, 이것을 구현하는 클래스들은 만드시 그 메서드의 내용을 구현해야 한다. (추상 클래스는 여기서 논외로 하겠습니다.) 라는 것이었습니다. 그리고 나오는 예제들이 TV나 그런거였고.. 여기서 다형성과 캐스팅에 대한 얘기들도 같이 나옵니다. 그렇게해서 Interface를 공부했는데.. 그렇게 공부를 하고 몇 년이 지나도록 업무에 있으면서 도무지 이 Interface가 왜 좋은지 이해를 못 하고 있었습니다. Interface로 메서드를 정의하고 그것을 구현하는 클래스들이 항상 같은 메서드를 갖도록 한다. 이것이 사람/.. 더보기
[Java] Interface의 Upcasting TV들이 아주 작 작동하는 군요. 하지만 사용자는 인터페이스를 통해서 조작하고 있습니다. 물론 TV를 만들어지만 TV내부는 각 회사에서 알아서 하겠죠. 하지만 TV의 인터페이스가 같기 때문에 어느 회사의 제품이나 조작하기는 편할 것입니다. 데이터베이스의 드라이브도 이러한 방식으로 Sun사에서 Database의 interface를 정의해두고 그 interface에 의해서 만들도록 하는 것입니다. TVBoard s = new SSgTV(); TVBoard g = new LGgTV(); 이 두 줄을 유심히 봐 주시기 바랍니다. 일반적인 Upcasting의 개념이 그대로 interface에서도 적용되고 있습니다. 이것은 인터페이스 자체도 클래스이기 때문에 Upcasting을 적용할 수 있는 것입니다. 사용자 측.. 더보기
[Java] Interface기초 자바에서 인터페이스의 사용 interface move 라는 것이 있고 이넘은 up, down, left, right 라는 메서드를 가지고 있다고 하면 이녀석을 구현하는 클래스들은 move의 대상 (예를 들면 게임에서 마린, 탱크 등등)에 따라서 실제적으로 구현해야 하는 방식이 달라질 것이다. 이것을 interface를 사용하지 않으면 무언가 바뀌거나 할때마다 해당 클래스를 생성하고 있는 소스를 찾아서 하나하나 바꿔줘야 한다. 하지만 interface를 사용해서 class marineMove implements Move { up().... .. } class wraithMove implements Move { up() .. } 해당 클래스들을 구현한 다음 다른 소스에서 Move move = getMoveS.. 더보기