아우 머리가 아프다
가끔 일어나는 두통인데
그떄가 지금인것 같다
두통을 일으키는 여러가지 요인들
제발좀 없어졌으면 좋겠다
근데 근심 걱정 없이 사는 사람이
존재하기는 하는걸까?
만약 있다면 노하우좀 물어보고싶다
대체 어떤 생각을 가지고 사는건지
당신이 혹시 그런사람이라면
제발좀 알려줘라
어째 내 블로그 주제가 점점
푸념으로 변하고 있는것 같다
앞으로 조절해서 기쁜일 하나
슬픈일 하나 번갈아 가면서 써봐야겠다
잡소리는 고만하고 오늘도 복습해보자
이번에는 제네릭에 대해서 알아보겠다
간단하므로 긴장할것 없다
그리고 남는 공간에는 그간 배운내용으로
학급관리시스템을 보여주겠다
물론 내가 짠것은 결코 아니다
먼저 제네릭에 대해서 살펴보자
// Generic : JDK1.5~
interface ITodo<T> {
public T get();
}
class Some<E> implements ITodo<String>{
E e;
public Some() {}
public Some(E e) {
this.e = e;
}
public E getE() {
return e;
}
@Override
public String get() {
return "";
}
}
class UseSome {
public static void main(String[] args) {
Some<String> s = new Some<String>();
s.e = "abc";
Some<Book> s2 = new Some<Book>();
s2.e = new Book("a", 1000);
}
}
제네릭은 주석에 써놓은것과 같이
JDK 1.5부터 사용이 가능하다
그전 버젼에서는 아무리 쓰려고 해도
안되니 자기가 쓰고 있는 것을
꼭 확인하고 사용하길 바란다
실상 설명할것도 별로 없다
그냥 <> 안에다가 원하는 자료형을
넣어서 사용해주면 된다
사실 창피하지만 더 자세히는 나도 모른다
난 그냥 Vector쓸때에나 열심히
옆에 달아서 썼기 때문이다
혹시나 여기 처음 온사람이라면
난 교수도 아니고 프로도 아닌
그냥 복습하고 있는 사람이니
내게 너무 많은걸 바라지는 말길 바란다
class Subject { private String name; private int score; // 교과목 찾을때 사용 public Subject(String name) { setName(name); } public Subject(String name, int score) { setName(name); setScore(score); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toString() { return name + " : " + score; } // 이름이 같으면 같은 교과목임. @Override public boolean equals(Object o) { if(o == null || !(o instanceof Subject)) { return false; } Subject temp = (Subject)o; return name.equals(temp.getName()); } } class Student { private String name; private Subject[] scores; public Student(String name, Subject... scores) { setName(name); setScores(scores); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Subject[] getScores() { return scores; } public void setScores(Subject... scores) { this.scores = scores; } // 개인별 총점 public int getTotal() { int total = 0; for(Subject temp : scores) { total += temp.getScore(); } return total; } // 개인별 평균 public int getAvg() { return getTotal() / scores.length; } /* 교과목 점수 찾기 param : 교과목 이름 return : 점수. 단, 존재하지 않는 교과목인 경우 -1 */ public int getSubjectScore(String name) { Subject goal = new Subject(name); int score = -1; for(Subject temp : scores) { if(temp.equals(goal)) { score = temp.getScore(); } } return score; } @Override public String toString() { StringBuffer info = new StringBuffer("<<" + name + ">>\n"); for(Subject temp : scores) { info.append(temp.toString()); info.append("\n"); } info.append("총점 : " + getTotal() + "\n"); info.append("평균 : " + getAvg()); return info.toString(); } } // 학급 class Klass { private Student[] list; public Klass(Student... list){ setList(list); } public Student[] getList() { return list; } public void setList(Student... list) { this.list = list; } // 교과목 총점 public int getTotal(String subjectName) { int total = 0; for(Student temp : list) { int score = temp.getSubjectScore(subjectName); if(score >= 0) { total += score; } } return total; } // 교과목 평균 public int getAvg(String subjectName) { return getTotal(subjectName) / list.length; } @Override public String toString() { String info = "- 학급정보 -\n"; for(Student temp : list) { info += temp.toString() + "\n"; } // 같은 학급의 학생은 시험 교과가 같으므로... Subject[] scores = list[0].getScores(); StringBuffer info = new StringBuffer(); for(Subject temp : scores) { String name = temp.getName(); info.append(name); info.append(" 총점 : "); info.append(getTotal(name)); info.append("\n"); info.append(name); info.append("평균 : "); info.append(getAvg(name)); info.append("\n"); } return info; } } class Answer { public static void main(String[] args) { Subject s1 = new Subject("국어", 90); Subject s2 = new Subject("영어", 70); Subject s3 = new Subject("수학", 100); Student st1 = new Student("애봉이", s1, s2, s3); Student st2 = new Student( "김수현", new Subject("국어", 90), new Subject("영어", 100), new Subject("수학", 100) ); Student st3 = new Student( "김유정", new Subject("국어", 100), new Subject("영어", 100), new Subject("수학", 100) ); System.out.println(new Klass(st1, st2, st3)); } }
아까 말했던 학급관리시스템이다
남는공간에 쓴다고 해놓고는
오늘 쓸내용의 절반을 차지 하고 있다
메인 주제인 제네릭은 반에 반도 안되는데 말이다
사실 나도 안다
요새 매우 게을러지고 있다
포스팅을 쓰는데 쓰는 시간이
배로 짧아지고 있는 것이다
이건 코드를 직접 쳐보거나
복붙해서 한번 실행해보길 바란다
여태까지 배운 내용들을
잘 인지하고 있다면
그닥 헷갈릴것도 없고
막히는 부분도 없을것이다
항상 느끼지만 코드는 직접
구현하는게 어려운거지
남이 짜준거 들여다보는건
참 쉬운거 같다
나만그런가?
'IT > 자바' 카테고리의 다른 글
Comparator 너는 누구니? (0) | 2017.05.19 |
---|---|
배열 정렬과 compareTo (0) | 2017.05.18 |
가변형 인자와 배열 두번째 (0) | 2017.05.16 |
배열 정리 첫번째 (0) | 2017.05.15 |
자바 equals 메소드 복습 (0) | 2017.05.14 |
댓글