클래스,객체, 인스턴스 - 그리고 로그인
INTRO
개념을 정리하고 다시 공부할때마다
붕어빵 생각밖에 나질 않았다.
이번에 sqlite로 회원정보 삭제하는 작업을 맡았는데
어디서 뭘 해야하는지 부터 모르겠고
어디를 가서 수정해야 하는지 모르는 상태였다.
결국 데이터 베이스 관련있어 보이는 로그인 페이지를 보고
그쪽에 가서 수정하기로 하였는데
내가 개념이 없다보니 써있는 코드를 읽는게 너무 힘들었다
조언을 구했는데
코드를 하나하나 주석을 달며 상세히 뜯어보는 작업이 필요하다고 한다.
이런게 처음에만 시간이 오래걸리지, 한번 이해해두면 나중에 편하다고 한다.
모르는건 챗지티피에 꼬리질문을 하고 강의도 조금씩 참조하면서 말이다.
같은 팀원에게 도움을 청하기도 했는데
이런 공부방법이 본인 스타일에 옳은 방법이라고 한다.
나도 이런 방식이 도움이 되는거 같지만 진행이 더뎌서 조바심이 들었는데
이번 기회에 같이 오래 고민해보고 제대로 정리해 보기로 했다.
여기저기 정리하고 다니느니 티스토리에 정리하는게 좋다고 해서
앞으로 여기에 기술관련되서 하나씩 올려보려고 한다.
잔디심으며 느리지만 조금씩 한걸음씩 걸어나가길 기원한다.
-----------------------------------------------------------------------------------------------------
모델에 로그인쪽에서 sqlite데이터베이스 보고 수정하는 상황이다.
맨위에 처음 선언하는 부분이 잘 모르겠다.
이런 부분의 단어를 하나하나 알아가 보자
클래스,객체,인스턴스.생성자란 무엇인지
//클래스(틀) ,객체=인스턴스 (한국어와 외국어차이:실행중인게 인스턴스라는데 모르겠다)
class DatabaseHelper {
//클래스(붕어빵) 객체=인스턴스 였다...!
//예를들어 회사 복사기= 객체 모두가 이 복사기를 쓰니깐
// 복사기만드는 기계(디비헬퍼)-복사기(객체=instance)1개로 가져다 쓴다- 회사에서 사람마다 다르게 복사해줌
// 복사기 1개로 가져다 쓰는게 싱글톤 패턴- 큰 기계 하나로 모든 일을 처리하는것
//인스턴스 이름이 인스턴스 이다. 싱글톤패턴이라 1개만 쓰니깐.
static final DatabaseHelper _instance1 = DatabaseHelper._internal();
//static final 데이터베이스를 여러개를 만들지 않고 하나만 쓰려고 한다.
//static : static 이후의 변수가 DatabaseHelper 클래스자체에 속한다고
// 클래스의 인스턴스가 공유한다 복사기 공용으로 쓰듯이
//final : 데이터베이스 이거 하나만 쓰려고 한다.
//그렇기에 한번만 초기화 될 수 있고 처음 할당된 이후에는 값이 변경되지 않는다
// _instance1 이게 그 변수 이름이다. DatabaseHelper클래스가 사용하는 딱 하나의 인스턴스 이름.
//호출할때 클래스를 부른다는데, 이거를 불러도 되지 않을까 싶다
factory DatabaseHelper() => _instance1;
//생성자이름이 instance1 이다
//싱글톤을 실제로 구현하면 factory를 쓴다
//항상동일한 객체를 내보내려고
static Database? _database;
DatabaseHelper._internal(); //생성자 정의 _이거 의미는
// 프라이빗 생성자로써 이 생성자가 외부에서 호출될 수 없음을 의미한다.
// 다른 클래스에서 DatabaseHelper 를 생성하거나 새로운 인스턴스를
// 생성하지 못하도록 제한하는것
하아...정리할수록 미궁속에 빠지는 느낌이다.
클래스 : 복사기 만드는 기계
객체=인스턴스 : 복사기
싱글톤 패턴 : 복사기 하나가지고 여러사람이 가져다 쓰는것
예시2
//사람이 클래스 , 인스턴스=객체는 국한 , 메서드 국한이 하는 행동들
//생성자 = 국한의 이름을 넣어주는거 - 클래스를 객체로 만들때 초기화 시켜주는거
//초기화 = 초기값을 세팅해주는것 , 내 이름 생년월일 등 초기의 값을 딱 정해주는것
//반환 = 배출 .내보내는값,,