꾸준히 하고싶은 개발자

9일차 인스턴스 본문

모두의연구소

9일차 인스턴스

프라우스 2023. 12. 7. 22:12

                     인스턴스

                                 object :최상위 객체 인 오브젝트는 모든 클래스를 상속 받는다.

                              계층 확인하기

                              toString()

                                  오버라이드(재정의 )하여 원하는 결과를 얻도록 수정할 수 있다                                 

                                    재정의 하기 전에 instance of 나온다.

                                     Hero 객체 데이터를 toString() 오버라이드 해서 덮어씌우면 hero 데이터가 나온다.

                                     

                                 object Vs dynmaic

                                     다이나믹 과 object 차이 런타임에 코드가 실행중에 결정된다.

                                     오브젝트는 컴파일 될떄 코드 작성 될떄 결정된다

                                   

                               연산자 재정의

                                   연산자 재정의 해서 내마음대로 재정의 하겠다.

                                  최상위 객체 (object) 안에 == opeator 가 있다.

command +N == () and hashcode 원하는 name 선택하면 나온다.

                                       셋을 재정의 이름이 같으면 같은 결로 하겠 다 identical :동일 한지 확인

                                     객체 주소 같은지 런타임타입이 히어로 면 나이름과 상대방이름 같은지 비교 하는 코드

                                 set map

                                      set map 데이터 확인 속도 빠르다 리스트는 입력 된 순서대로 되기때문에

                                       1. 모든 object 속한 객체는 다 다르게 메모리 (해시값)을 주어진다.

                                       2.같은 객체 는 같은 메모리주소(해시값을 )가진다.

                                  set 검색이 빠르다 hash code object 모든객체 hash 코드를 가진다 .

                              hash code(해쉬코드

                                  다트는 메모리 주소 을 알수 없다 다 실제 는 다르지만 hashcode 메모리 주소다 라고 보자

                                  object → hashcode를 가진다. 숫자마다 해쉬코드값이 다 다르다

                                  같은 해쉬코드를 호출 하면 다시 재정의 한다.

                                 set는 내부적으로해쉬코드를 비교한다

                                 리스트 순서대로 무조건 동일하다 빠르다 hashcode 테이블 안에 저장해놓고 데이터 빠르게 반환한다.

                                 ⇒ int로 한다

                                  동등성 비교

                                    같은지 비교 코드 

                                   정렬 하기 sort

                                      sort ()정렬 오름 차순 과 내림 차순으로  정렬한다.

                                      재정의 해서 내가 원하는 규칙으로 정렬하겠다 .                                  

 

void main() {
  //정렬 솔트 sort()

  // 해당하는 리스트 선언
  final List<int> nums = [3, 1, 6, 7, 8, 3, 4];

  // 오름차순
  nums.sort((c, d) => c.compareTo(d));

  // 내림차순
  //nums.sort((a,b)=> -a.compareTo(b));

  // sort 정렬 하지 않으면 이 규칙 정해서 해야한다 쉽게 메소드 쓰자
  // nums.sort((c, d) {
  //   if (c > d) {
  //     return 1;
  //   } else if (d > c) {
  //     return -1;
  //   } else {
  //     return 0;
  //   }
  // });
  // 출력하기
  print(nums);

  //글자 정렬하기
  final List<String> books = [
    '오준석의 플러터 생존 코딩',
    '오준석의 안드로이드 생존코딩 : 코틀린 편 ',
    '코딩 책 ',
  ];
  // 정렬 하기
  books.sort();
  print(books);
}

// 클래스 학생 생성
class Student implements Comparable<Student> {
  String name;
  String classRoom;
  int age;

  // 생성자
  Student({
    required this.name,
    required this.classRoom,
    required this.age,
  });

  // toString  맨마지막에 쓰자
  @override
  String toString() {
    return 'Student{classRoom: $classRoom}';
  }

  // 클래스룸 순으로 정렬
  @override
  int compareTo(Student other) {
    final classEqual = classRoom.compareTo(other.classRoom);

    if (classEqual == 0) {
      return -age.compareTo(other.age);
    }
    return classEqual;
  }
}

미흡 한 부분은 나중에 내일 올리겠습니다.

'모두의연구소' 카테고리의 다른 글

10일 String  (1) 2023.12.08
10일 제네릭  (0) 2023.12.08
8일차 다형성  (1) 2023.12.06
7일차 추상클래스와 인터페이스  (1) 2023.12.05
7일차 상속 (inheritance)  (2) 2023.12.05