This
dog.o: dog.cpp collar.h
$(CC) $(CFLAGS) -o dog.cpp
collar.o: collar.cpp collar.h
$(CC) $(CFLAGS) -o collar.cpp
should read
dog.o: dog.cpp collar.h
$(CC) $(CFLAGS) -c dog.cpp
collar.o: collar.cpp collar.h
$(CC) $(CFLAGS) -c collar.cpp