1. JAVA/3). 자바_개념

자바_개념_Day_21

구이제이 2024. 1. 29. 18:07

this()

super개념

 

생성자가 항상 super를 찾아가지는 않는다.

this.가 있다면, 생성자는 자기자신안에 있는 생성자숫자에 맞춰서, this를 따라가는 것이 먼저 일수가 있다.





ㅡㅡㅡ





ㅡ 오전 ㅡ 

Student 3가지로 만드는방법

1.그냥하는 방법

2.생성자에서 초기화해서 만드는법

3.어레이리스트(컬렉션 프레임워크 - 자료를 저장하는방식)

그 자료를 어떻게 효율적으로 처리하는게 좋을까? 

어레이리스트(장점 :  지웟다가 넣었다가 하는데 용의하다.)

단점 : 멀티쓰레드 되면, 




성적

수강과목

학생정보

성적처리





#데이터가 중복이 되면, 최소화 하기 위해 ‘메소드’를 사용한다.

자바에서 역할과 구현(처리)

ex) 부모 >  처리(어떻게

 

#데이터를 둘로 나누어서 관리한다.

둘의 매개점은 학생번호로 연결고리를 짓는다.

 

*학생 ㅡㅡㅡ> Student

학번 ㅡㅡㅡ> String sn

이름  ㅡㅡㅡ> String name

수강과목별 점수  ㅡㅡㅡ> Subject[] subjejct

 

*수강과목 ㅡㅡㅡ> Subject

과목명  ㅡㅡㅡ> String subjectName

담당교수  ㅡㅡㅡ> int subjectScore

 

*메소드

계산

 

// 조원들의 요구사항을 모두 적는다.

항목으로 묶는다.

부수적인것, 

 

#역할정하기

인터페이스,추상클래스,상속관계,그 안에 그냥 객체생성할거냐 - 역할을 정한다.

 

#구현하기



학생의 성적을 출력하는 프로그램 작성(3가지 방법)

1.메소드

2.클래스

3. 어레이리스트

 

함께 구조를 잡고, 매일매일 회의하기.

설명하고 설명받기

 

이 설계한다는 것 로직이 잡히는것.



<요구사항>

1)학생별 수강과목이 다르다 => 과목수에 따른 공간 확보

2)학생별 수강과목 점수를 입력받아서

수강과목별 점수 출력하고

3)학생별 총점과 평균을 구하라






*학생 ㅡㅡㅡ> Student

학번 ㅡㅡㅡ> String sn

이름  ㅡㅡㅡ> String name

수강과목별 점수  ㅡㅡㅡ> Subject[] subjejct




*수강과목 ㅡㅡㅡ> Subject

과목명  ㅡㅡㅡ> String subjectName

담당교수  ㅡㅡㅡ> int subjectScore

 

 

 

  • 메소드

수강과목과 점수 입력 받아서 계산

 

  • 출력 메소드



<출력형태>

*** ~ 님 수강과목과 점수 확인 ***

수강과목 점수

국어 : 90

….



*** ~님 성적 ***

학번 : ~~

총점 : ~~

평균 : ~~

 

 






콜렉션



-List : ArrayList 검색

vector



-set



-Map(key, value)



-단일 쓰레드

-멀티쓰레드(영상,소리,자막)






< Collections Framework >

1. 컬렉션 

   - 객체의 저장

   프레임워크 : 사용 방법을 정해 놓은 라이브러

2. Collection Framework의 인터페이스

   - java.util 패키지 안에 위치

   1) List : 

      - 순서가 있는 데이터 집합

      - 데이터 중복 가능

      - 같은 자료형 저장 가능

      - 저장 공간 동적으로 처리

       - 객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스가 부여되고

         인덱스를 이용해서 객체를 추가, 삽입, 삭제를 할 수 있음

      - ArrayList(단일쓰레드환경) : 삽입/삭제는 LinkedList에 비해 느리나

          검색 속도는 빠름(인덱스로 검색하기 때문)

      - LinkedList : 삽입/삭제는 ArrayList에 비해 빠르나, 검색 속도는 느림

      - Stack : Vector 클래스를 상속 받음

      - Vector(멀티쓰레드 환경에 사용) : ArrayList와 동일한 내부 구조 가짐

         동기화된 메소드로 구성되어 있기 때문에 멀티 쓰레드가 동시에 

         Vector() 메소드를 실행할 수 없음.

         따라서 멀티 쓰레드 환경에서는 안전하게 객체를 추가 또는 삭제할 수 있음

 

          비교) 배열 - 한 번 저장 공간을 확보하면 다시 변경 불가

                        List - 저장공간이  동적으로 확보

 

   2) Set : 순서가 없는 데이터 집합

       중복을 허용하지 않음

      HashSet, TreeSet

 

   3) Map : 키(Key)와 값(value)의 쌍으로 이루어진

      데이터 집합

      순서가 없음

      Key는 중복 허용하지 않음

      value 중복 허용

      HashMap, TreeMap, Hashtable, Properties ...

 

3. List 컬렉션에 사용하는 메소드

   boolean add(E element) : 주어진 객체를 맨 끝에 추가

   void add(int index, E element) : 주어진 인덱스에 객체를 추가

   set(int index, E element) : 주어진 인덱스에 저장된 객체를 주어진 객체로 변경

   E get(int index) : 주어진 인덱스에 저장된 객체를 리턴(반환)

   int size() : 저장되어 있는 전체 객체 수

      비교) 배열 - 배열명.length,   문자열 - 문자열.length()

   boolean isEmpty() : 컬렉션이 비어 있는지 조사

   void clear() : 저장된 모든 객체를 삭제

   E remove(int index) : 주어진 인덱스에 저장된 객체를 삭제

   boolean remove(Object o) : 주어진  객체를 삭제



★은행문제

1.클래스

ㅡ 계좌정보에 관한 Account

 

ㅡ 실행클래스 : bankApplication



2. Account

ㅡ 계좌번호 : private String accountNO

ㅡ 계좌목록 : private String owner

ㅡ 예금액 : private int balance

 

3. BankApplication

메소드

ㅡ 계좌생성 : private createAccount();

ㅡ 계좌목록 : private accountList

ㅡ 예금 : private deposit

ㅡ 출금 : private  withdraw

ㅡ 계좌번호 찾기 : private Account findAccount(String accountNO)