This sounds like homework, so I'll give you no code.
But it isn't complex: the "count the mines bit is really very easy (and made even easier if you cheat).
I would cheat - make the playing surface 2 cells bigger in each direction, so you have a border of one cell around the whole surface. So if you have a two by two surface for the player:
##
##
You surround it by a one cell border:
++++
+##+
+##+
++++
You then clear the border so it contain no mines.
Now, when you count all the cells around the specific cell for mines, you don't have to do any error checking to ensure you aren't running out of surface - because you will and count the border cells instead. Which contains no mines! And I'd make a mine a 1, and no mine a zero...
This done, the test is easy:
if you are checking cell (x,y) then the count is simple:
count = (x-1, y-1) + (x, y-1) + (x+1, y-1) + (x-1, y) + (x+1, y) + (x-1, y+1) + (x, y+1) + (x+1, y+1)
All you have to do is write two methods: GetCellAt and SetCellAt which take the x and y addresses